硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3937|回复: 8
收起左侧

在stm32F746-Disc板子上测试了CMSIS-WIFI dirver

  [复制链接]

17

主题

248

回帖

299

积分

高级会员

积分
299
发表于 2020-5-4 11:02:33 | 显示全部楼层 |阅读模式

一、使用体验:
    简单配置就可使用,很方便。再也不用自己写AT指令部分的,而且都是是封装好的API.下边附上一个简单的测试例程。代码极其不规范,请勿作为模板。

二、值得看的源码部分:
注意tcp server的IP和端口配置。测试前要先在主机上起一个tcpserver,然后在板子上配置对应的地址和端口

  1. extern ARM_DRIVER_WIFI Driver_WiFi0;
  2. static ARM_DRIVER_WIFI *wifi = &Driver_WiFi0;

  3. ARM_WIFI_CONFIG_t wifi_config = {0};
  4. ARM_WIFI_NET_INFO_t net_info;




  5. void initialize_wifi (void) {
  6.   char info[32];

  7.   wifi = &Driver_WiFi0;

  8.   // Initialize and Power-on WiFi Module
  9.   if(wifi->Initialize (NULL) != ARM_DRIVER_OK )
  10.         {
  11.                 printf("Initialize err\r\n");
  12.                 while(1);
  13.         }
  14.   if(wifi->PowerControl (ARM_POWER_FULL) !=ARM_DRIVER_OK )
  15.         {
  16.                 printf("powerControl err\r\n");
  17.                 while(1);
  18.         }

  19.   // Retrieve module information
  20.   wifi->GetModuleInfo(info, sizeof(info));       
  21. }

  22. void setOption_wifi(void)
  23. {
  24.         uint8_t ip[4];

  25.         ip[0] = 192U;
  26.         ip[1] = 168U;
  27.         ip[2] = 0U;
  28.         ip[3] = 1U;
  29.          
  30.         // Set IP static address of the Station
  31.         wifi->SetOption (0U, ARM_WIFI_IP, &ip, sizeof(ip));

  32. }

  33. void active_wifi(void)
  34. {
  35.         int32_t status;
  36.         ARM_WIFI_CONFIG_t wifi_config;

  37.         wifi_config.ssid = "HiWiFi_59DA5A";
  38.         wifi_config.pass = "xieyanghi";
  39.         wifi_config.security = ARM_WIFI_SECURITY_WPA2;
  40.         wifi_config.ch = 11U;
  41.         wifi_config.wps_method = ARM_WIFI_WPS_METHOD_NONE;
  42.          
  43.         // Connect to wireless network
  44.         status = wifi->Activate (0U, &wifi_config);
  45.         if(status != ARM_DRIVER_OK) {
  46.                 while(1)
  47.                 {
  48.                
  49.                 }
  50.                 // error handling
  51.         }
  52. }

  53. void ping_host (void) {
  54.   uint8_t ip[4] = { 192U, 168U, 1U, 1U };
  55.   int32_t res;

  56.   wifi = &Driver_WiFi0;
  57.   res = wifi->Ping ((uint8_t *)ip, sizeof(ip));
  58.   if (res != ARM_DRIVER_OK) {
  59.     // Host responded
  60.                 while(1)
  61.                 {
  62.                
  63.                 }
  64.   }
  65. }

  66. static const char message[] = { "The quick brown fox jumps over the lazy dog." };
  67.   
  68. void Echo_Client_Thread (void *arg) {
  69.   uint8_t ip[4] = { 192U, 168U, 1U, 53U };  //这里根据主机的IP来配置
  70.   int32_t sock, res;
  71.   char dbuf[120];

  72.   while (1) {
  73.     wifi = &Driver_WiFi0;
  74.     sock = wifi->SocketCreate (ARM_SOCKET_AF_INET, ARM_SOCKET_SOCK_STREAM, ARM_SOCKET_IPPROTO_TCP);

  75.     res = wifi->SocketConnect (sock, (uint8_t *)ip, sizeof(ip), 6000U);//主机上tcp server的服务端口
  76.     if (res == 0) {
  77.       wifi->SocketSend (sock, message, sizeof(message));
  78.       res = wifi->SocketRecv (sock, dbuf, sizeof(dbuf));
  79.       if (res < 0) {
  80.         break;               // Error occured
  81.       }
  82.       if (res > 0) {
  83.         if (memcmp (dbuf, message, res) != 0) {
  84.           // error handling, message is not the same as sent
  85.         }
  86.       }   
  87.     }
  88.     wifi->SocketClose (sock);
  89.     osDelay (1000U);
  90.   }
  91. }

  92. /*----------------------------------------------------------------------------
  93. * Application main thread
  94. *---------------------------------------------------------------------------*/
  95. __NO_RETURN static void app_main (void *argument) {
  96.   (void)argument;
  97.   // ...
  98.        
  99.         initialize_wifi();
  100.         printf("initialize_wifi complete\r\n");
  101.        
  102.        
  103.         active_wifi();
  104.         printf("active_wifi complete\r\n");
  105.        
  106.         //等待连接
  107.         while(!wifi->IsConnected())
  108.         {
  109.                 //循环等待
  110.         }
  111.         printf("Connected complete\r\n");

  112.         ping_host();
  113.         printf("ping_host complete\r\n");
  114.        
  115.         Echo_Client_Thread(NULL);

  116.         // Disconnect from wireless network
  117.         wifi->Deactivate (0U);

  118.        
  119.        
  120.   for (;;) {}
  121. }
复制代码

配置部分:
RTE配置:
用到的组件配置


Snipaste_2020-05-04_10-54-05.png
Snipaste_2020-05-04_10-54-29.png


device配置:

Snipaste_2020-05-04_10-54-57.png
Snipaste_2020-05-04_10-55-08.png

两个配置文件
UART配置和WIFI使用的串口根据自己实际情况作配置,这里仅作示范。

Snipaste_2020-05-04_10-55-41.png
Snipaste_2020-05-04_10-55-52.png

基本上就以上这些
32F746cmsisWifi.7z (88.5 KB, 下载次数: 201)


评分

参与人数 1金币 +100 收起 理由
eric2013 + 100 很给力!

查看全部评分

回复

使用道具 举报

6

主题

636

回帖

654

积分

金牌会员

积分
654
QQ
发表于 2020-5-4 19:52:01 | 显示全部楼层
mark,感谢楼主分享
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2020-5-5 01:01:48 | 显示全部楼层
非常感谢楼主分享
回复

使用道具 举报

0

主题

34

回帖

34

积分

新手上路

积分
34
发表于 2020-5-8 23:57:58 | 显示全部楼层
请教一下楼主 开启了network-》interface-》wifi后,会出现异常EvrNetWiFi_SetBypassModeFailed。单独测试cmsis-driver是可以连接上路由器的。哪里配置错了呢。
wifi.png
wifi2.png
回复

使用道具 举报

0

主题

34

回帖

34

积分

新手上路

积分
34
发表于 2020-5-9 00:20:51 | 显示全部楼层
大概知道原因了 8266不支持所谓的旁路模式
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2020-5-9 13:19:33 | 显示全部楼层
登云钓月 发表于 2020-5-9 00:20
大概知道原因了 8266不支持所谓的旁路模式

你这个结论很有价值,正打算测试下8266
回复

使用道具 举报

5

主题

61

回帖

76

积分

初级会员

积分
76
发表于 2020-6-26 11:56:13 | 显示全部楼层
我用这个CMSIS driver wifi   进行server 没有成功啊! 网络调试助手作为客户端搞不定啊!  能否提供一下示例代码
回复

使用道具 举报

1

主题

11

回帖

14

积分

新手上路

积分
14
发表于 2023-11-15 11:25:20 | 显示全部楼层
有没有使用SPI的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106731
QQ
发表于 2023-11-15 11:52:33 | 显示全部楼层

这个是SPI的

下载 (3).png
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 00:29 , Processed in 0.216618 second(s), 37 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表