你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 1270|回复: 2

[STM32L496] 【NUCLEO-L496ZG评测】+USB OTG测试

[复制链接]

10

主题

92

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-11-25
发表于 2017-5-4 16:59:08 | 显示全部楼层 |阅读模式
6、USB OTG测试
所谓的USB OTG就是这个USB口可以作为USBHost来使用,也可以作为USB Device来使用,但是同一时间只能配置为一种模式。手机上面的USB口即为这种USB OTG。
下面来测试一下这个USB OTG的功能。首先新建一个cubemx工程,按之前的方法配置好CPU,串口,时钟等,然后按照如下方法配置USB
1、USB-OTG-FS打开,选择Host-only,VBUS需要选上。这个VBUS是用于给连接在USB接口上的设备供电的,如果你的USB设备能够自行供电也可以不选。
1.jpg
2、在中间件那里选上USB-HOST选项,这里使用USB storage
2.jpg
3、在中间件那里选上FATFS选项,这里使用USB Disk
3.jpg
4、生成代码,堆栈尽可能选大一些,其余配置按照前面介绍的就行
4.jpg
用Keil打开工程,可以看到工程的结构,看到这个工程比较复杂,包含很多个文件,但是实际上需要修改的就只有main.c这个文件,增加功能性的函数。
5.jpg
其中所需要的函数都包含于名为ff.h的文件中,有关ff.h文件的用法请参考https://wenku.baidu.com/view/736efb40b307e87101f69651.html
这里笔者演示一个从U盘的一个txt文件中读取一行字符的实验。在main.c的main函数的while(1)中增加如下的语句:
  1. if(APPLICATION_READY == Appli_state){
  2.        FATFS fatfs;
  3. printf("***************************************************\r\n");      
  4. if(FR_OK == f_mount(&fatfs,USBH_Path,1)){
  5.        printf("successfully mount USB Disk \r\n");
  6.        FIL file;
  7.        if(FR_OK == f_open(&file,"demo.txt",FA_CREATE_ALWAYS|FA_WRITE|FA_READ)){
  8.        printf("demo.txt");
  9. printf(" successfully open \r\n");
  10.        char writeContent[] = "This is STM32L496";
  11.        char readContent[200] = {0x00};
  12.        uint32_t realLen = 0;
  13.        if(FR_OK == f_write(&file,writeContent,strlen(writeContent),&realLen)){
  14.                             printf("The content has been written \r\n");
  15.               f_lseek(&file,0);
  16.               if(FR_OK == f_read(&file,readContent,realLen,&realLen)){
  17.                      printf("The content has been read successfully \r\n");
  18.                      printf(readContent,realLen);
  19.                      printf("\r\n");
  20.                             }else{
  21.                                    printf("read content error.\r\n");
  22.                             }                          
  23.                      }else{
  24.                             printf("write content error.\r\n");
  25.                      }
  26.                      printf(" USB Host test finished \r\n");
  27.                      f_close(&file);
  28.               }else{
  29.                      printf("Unsuccessfully creat the file \r\n");
  30.               }
  31.        }else{
  32.               printf("Unsuccessfully mount USB Disk \r\n");
  33.        }
  34.        printf("***************************************************\r\n");
  35.        MX_DriverVbusFS(1);
  36.        while(1);
  37.        }
复制代码

然后编译,下载到开发板上面实验
最后来演示一下,首先准备一个U盘,现在里面是没有这个demo.txt的文件的
6.jpg
用一个OTG转接头,将U盘与开发板的USB接口连接,此时,开发板USB接口旁边的绿色灯会亮。
7.jpg
串口会打印出如下图所示的信息。
8.jpg
将U盘再次连接到PC上面,这时可以看到,U盘中多出了这个名为demo.c的文件。
9.jpg
Demo.c里面的内容恰好就是打印的那句"This is STM32L496"。
10.jpg
至此,就完成了这个开发板USB部分的测试。
STM32L496的USB部分被集成在了芯片内部,可以使用芯片内部的时钟,因此不需要外置晶振,这样可以有效减少板子上的元件数目。


======================================================================================


最后,感谢@moyanming2013 的测试思路




<
回复

使用道具 举报

5

主题

44

回帖

0

蝴蝶豆

金牌会员

最后登录
2019-8-28
发表于 2017-5-4 17:29:25 | 显示全部楼层
赞一个~~
这个是连载吗?
回复 支持 反对

使用道具 举报

10

主题

92

回帖

0

蝴蝶豆

金牌会员

最后登录
2020-11-25
 楼主| 发表于 2017-5-4 18:09:33 | 显示全部楼层
乖乖妮 发表于 2017-5-4 17:29
赞一个~~
这个是连载吗?

是的,前面还有硬件解析,开发环境那些内容
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版