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

【NUCLEO-L496ZG评测】震惊!男人看了会沉默的无晶振USB-OTG评测

[复制链接]
donatello1996 提问时间:2017-5-5 21:36 /
     我想知道有多少人点进来看了
       1-161019145132.jpg
     USB-OTG,OTG的意思是On The Go,意思是在没有主机(PC)充当主设备(Host)的情况下,各个USB从设备能够进行数据通信,虽是这样说,USB设备通信是一定要分主从的,因此,在这个实验中,开发板就是主设备(Host),U盘就是从设备了。有一点要注意的,由于没有像PC机这样的传统主设备那样提供电源,因此U盘的供电由开发板提供,即OTG接口有一个VBUS引脚,这个VBUS由PG6的电平通过控制一个三极管来控制通断,三极管通断表示是否给从设备供电,若该PG6控制给从设备供电,则LD8绿色灯会亮。 1.PNG 2.PNG IMG_20170505_193742.jpg
    早些年,STM32的官方开发板就已经有USB-OTG的例程演示了。如图所示,此为STM32F429-Disco开发板的电子画板例程,用户在画完图案后点击保存按钮,则画板会以BMP格式存储在USB-OTG从设备(U盘)上,将U盘插上电脑就能看到刚画的图案的图片文件了。 3.jpg 4.jpg
       正如之前的帖子所说的那样,这种OTG接口使用MCU内部晶振作时钟源,省去外部晶振,在节省电路板空间的同时不影响性能,但前提是MCU支持USB-OTG-FS接口,因此大家在移植例程给F103或者F0系列的时候可以用CubeMX看下相应的MCU是否支持USB-OTG-FS接口,如图所示,F103系列由于年代久远,并不支持USB-OTG-FS接口,而F0系列就更不用说了,虽然出现的比F103系列晚,但是由于F0系列本身精简了许多外设,因此也不支持USB-OTG-FS接口。不过不用灰心,看过4月25日STM32峰会直播的童鞋就知道,STM32L0最新的型号有可能支持Type-C接口,因此,等那个型号的板子出来之后,再慢慢玩吧。
16.PNG
    之前社区已经有不少人发过基于CubeMX自动生成代码工程的无晶振USB-OTG评测了,为此步骤不再重复,简单来说就是配置引脚-选Fatfs和USBHost中间件-设置系统时钟。
6.PNG 7.PNG 8.PNG
    但我要说下非常重要的三点地方,这三点非常重要,若没注意,则USB-OTG程序无法正常运行。第一点,就是系统滴答时钟中断处理SysTick_Handler()和USB-OTG中断处理OTG_FS_IRQHandler()必须写上,而很多新手用CubeMX生成代码的时候往往会不注意这点
5.PNG
第二点,那就是堆和栈的大小必须大于0x500,最好调大一点,因为OTG所需系统堆栈空间其实也很大的,如果调小了的话,文件系统的f_open()函数就无法使用。这点是必须要注意到的。如果在CubeMX中没有配置,可以在startup_stm32l496xx.s中重新配置。第三,如上文所说,要配置PG6为输出并输出高电平,否则从设备获取不到供电而无法工作。第二点和第三点在之前的帖子都有提及,但是第一点却从未有人提及过!
9.PNG 17.PNG
    放上部分代码和实验效果。在一个间隔为1秒的死循环中,使用f_open()函数打开文件系统并创建文件,然后使用f_write()函数编辑文件,文件保存完毕并关闭后,再次使用f-open()函数打开,然后用f_read()函数读取文件作校验。
14.PNG 15.PNG 11.PNG 12.PNG
    上传工程文件和Fatfs以及Usbhost的驱动文件。
驱动文件.zip (736.26 KB, 下载次数: 12)
10.PNG
13.PNG

评分

参与人数 1 ST金币 +20 收起 理由
zero99 + 20 赞一个!

查看全部评分

收藏 2 评论19 发布时间:2017-5-5 21:36

举报

19个回答
小虾丁 回答时间:2017-5-11 17:24:37
我用STM32CUBEMX,就只是用来生成一些初始化代码。
moyanming2013 回答时间:2017-5-9 12:05:07
donatello1996 发表于 2017-5-9 09:26
第一,代码最重要的三点是可读性,可移植性,健壮性,而cubeMX生成的代码东丢西落,关键时钟使能语句和中 ...

1.我看了楼主你的代码,你根本就没有用STM32CUBEMX生成代码,楼主你的代码如下图:
1.jpg
用STM32CUBEMX生成的代码如下图(在我的帖子里面也可以直接下载到看看https://www.stmcu.org.cn/module/forum/thread-611658-1-1.html):

2.jpg
其实通过对比就可以看出来到底是你的代码有所谓的“可读性、可移植性、健壮行”还是ST官方的有可读性、可移植性、健壮行!
显然的,ST官方的代码结构、规整都符合工程性思维带来的良好可读性、可移植性和健壮行!具体代码展示如下述。
2.楼主的main函数节选如下图:
5.jpg
用STM32CUBEMX生成的main函数节选如下图:
6.jpg
注释!我们强调的就是注释,楼主说ST官方的注释见下图红框:
7.jpg
ST的注释怎么可能没用呢?写的非常清楚,在哪写代码,哪些函数的功能如何等等!请问看了没就说注释没用?!
在哪写代码正是STM32CUBEMX的精妙所在,也正是解决楼主的疑惑:
10.jpg
我负责任的告诉你,真!不!累!而且倍爽!在STM32CUBEMX中修改GPIO及其配置、中间件等等,使用STM32CUBEMX非常友好而且速度比用手写快多了!关键是不会丢失你写过的代码,不会删除你添加的文件。
你想到的别人也一定想到了!
3.楼主说的第一点根本就是自己没有使用STM32CUBEMX生成代码,而正说明了楼主是“凑出来”的工程导致的!凑出来的工程怎么能符合最新的L496系列的芯片呢?
楼主提到:
9.jpg
用STM32CUBEMX生成的代码不用动手就自动已经是这样了,代码可以从我的帖子下到:
https://www.stmcu.org.cn/module/forum/thread-611658-1-1.html
用STM32CUBEMX生成的代码如下图:
8.jpg
所以,这也正说明了一点:STM32CUBEMX是严格的和实时性很强的!
通过楼主的言论看,对STM32CUBEMX抱有很大的成见,以至于根本没用STM32CUBEMX就说它有这样和那样的问题,但是楼主帖子里又提到自己在用而且还加了几个图来说明,到底是用了还是没用呢?还是只是贴几张图“糊弄”一下呢?!如果不是糊弄,那么是不会出现楼主的所谓的第一点关于中断的问题的!
我很负责任的告诉你,STM32CUBEMX是可用的,而且尤其对于新手来说!我们都知道看linux的源码可以提升自己,同样,ST花费那么多精力来完善STM32CUBEMX是有值得我们学习的地方的!尤其是改善国内“垃圾”代码横行的风气!
别以老鸟卖老鸟,再不学习就落伍了!
moyanming2013 回答时间:2017-5-8 23:07:37
之所以出现你说的第一点:
1.你使用cube或其它程序凑成的工程,缺少一些配置或代码片段很正常,不是你理解的不正常和别人没注意到。
2.你该升级下CUBE到最新版v4.20.1和L4的hal库到最新版v1.7.0(从v1.6.0升级不上来就重新装),没有你说的所谓的“奇怪”的问题。我的示例代码都是从上述最新版本生成的,自己写的除外,没问题。
donatello1996 回答时间:2017-5-7 11:48:16
补回工程文件。 工程文件1.zip (2.31 MB, 下载次数: 4)
arenas 回答时间:2017-5-9 09:00:16
想了想过程,准备也拿我的429试试看,otg这个现在有库支持会方便不少,以往因为配置麻烦而且不一定成功基本都懒得去折腾
donatello1996 回答时间:2017-5-9 09:26:53
本帖最后由 donatello1996 于 2017-5-9 09:38 编辑
moyanming2013 发表于 2017-5-8 23:07
之所以出现你说的第一点:
1.你使用cube或其它程序凑成的工程,缺少一些配置或代码片段很正常,不是你理解 ...

第一,代码最重要的三点是可读性,可移植性,健壮性,而cubeMX生成的代码东丢西落,关键时钟使能语句和中断handler语句七零八落,还加上一大堆没用的注释,可读性非常低;代码要有可移植性必须经过系统的归纳整理,也就是你所谓的"拼凑",生成属于自己的工程,这才叫可移植性,不然,每次要用新的外设都要用cubeMX生成的工程,不累?至于健壮性更不用说了,没有经过归纳的工程何来的健壮性?我们是老鸟,稍微改点东西不会报错,就算报错了我们也知道怎么解决,但是占社区人数最多的萌新呢?一改就各种报错。cubeMX只是一个工具,我们只是用它生成的十几条初始化语句粘贴到自己的工程而已,工具有时候出问题是很正常的,我们既然是在评测一个开发板,知道哪里出问题,当然有义务告诉广大的萌新,而不是像之前的帖子那样简单地生成代码应付一下了事。
第二,我的cubeMX和firmware均为最新版本,不需要你的提醒和质疑。
donatello1996 回答时间:2017-5-9 09:31:54
SInzo 发表于 2017-5-9 09:00
想了想过程,准备也拿我的429试试看,otg这个现在有库支持会方便不少,以往因为配置麻烦而且不一定成功基本 ...

429官方例程就有otg,去玩一下吧,真的很好玩
donatello1996 回答时间:2017-5-9 12:20:53
本帖最后由 donatello1996 于 2017-5-9 12:28 编辑
moyanming2013 发表于 2017-5-9 12:05
1.我看了楼主你的代码,你根本就没有用STM32CUBEMX生成代码,楼主你的代码如下图:

用STM32CUBEMX生成的 ...


第一,我这个工程的确是自己参照frimware从无到有建立起来的,我没有说过这个工程是从cubemx生成的
第二,我在写程序的过程中的确是参照了cubemx生成的工程的初始化代码,因为对于我来说cubemx生成的工程就只有外设初始化代码是有用的
第三,你觉得不累,我觉得累,这是我自己认为累的,谁也不能说服谁
第四,如果你认为我只是贴几张图片糊弄大家的话,那你就错了,我要是想糊弄,连图片都不想贴,因为这几张图片的内容在我使用cubemx过程中的确有调用
第五,你认为我认为cubemx没有用,那是你的主观臆测
第六,cubemx只是一个工具,如果人们以后写代码依赖cubemx,不去深究它生成的代码结构,一离开cubemx就没辙,那不是更可怕的事情?
第七,系统滴答时钟函数和USB-OTGhandler()函数,谁也不敢100%保证一定会注意到,万一要移植到别的MCU呢?移植到F4,F7上面去呢?
第八,既然cubemx只是一个工具,用不用是看情况的,如果有时候点个灯,用寄存器就能搞定的事情,根本不需要用上cubemx,那还有必要用到?
第九,倚老鸟卖老鸟的是你,我是去年11月底加入社区的,发的帖子貌似不比你少很多

aderson 回答时间:2017-5-9 12:48:33
donatello1996 发表于 2017-5-9 12:20
第一,我这个工程的确是自己参照frimware从无到有建立起来的,我没有说过这个工程是从cubemx生成的
第二 ...

本人无意引战,有任何对我感觉心里不爽的事请憋着,不要评论我,也不要AT我
这点上面比较支持楼主,cubemx存在的问题是效率差和学习成本高的问题,因为增加了HAL层,越是抽象的东西就越是难懂,文件数量也变多了,HAL刚出来的时候,我也去研究过这个库,发现配置是非常方便,但是之后就发现一个问题,同样的功能,类似的实现方式HAL的开销是非常大的,当然现在单片机资源越来越大,也不缺这么一点。还有一个最重要的一点是,之前的工程全部用的STD写的,积累下来的自己调试好的一些内外设的驱动,基本都是非常稳定的,所以鼠标点点,配置工程和复制粘贴没啥区别。而且标准库用的时间久了,项目做的多了,多维护一套HAL库也是麻烦事,以上个人不用HAL的原因。
Stm32McuLover 回答时间:2017-5-9 12:55:55
adersonl 发表于 2017-5-9 12:48
本人无意引战,有任何对我感觉心里不爽的事请憋着,不要评论我,也不要AT我
这点上面比较支持楼主,cubem ...

以后的片子不支持STD,据说2017 Q4全面支持LL+HAL
donatello1996 回答时间:2017-5-9 12:58:00
他说的cubemx生成的工程的可读性高,我就笑了,外设驱动函数在main.c里面,然而外设时钟使能函数却丢在msp.c里面,handler函数丢在it.c里面,还被一大堆绿色注释语句包围,要是一个新手不了解cubemx是这脾气,调试半天都不知道哪里错了
aderson 回答时间:2017-5-9 13:01:00
哈佛祖安智 发表于 2017-5-9 12:55
以后的片子不支持STD,据说2017 Q4全面支持LL+HAL

这个也早就料到了,毕竟STD已经N年没有更新了,不过就目前来看,F0 1 2 3 4 都支持STD(F7支持不?),目测这些个芯片能用好多年了,毕竟实际项目要考虑成本的,倒也不是很烦那些事,等HAL真的更新的不错的时候再用也可以
donatello1996 回答时间:2017-5-9 13:09:28
adersonl 发表于 2017-5-9 13:01
这个也早就料到了,毕竟STD已经N年没有更新了,不过就目前来看,F0 1 2 3 4 都支持STD(F7支持不?),目 ...

现在问题不是hal库,hal库我觉得挺好用的,挺适合新手入门,问题是他就是个cubemx神教,容不得人家说半点cubemx不好的地方。
wofei1314 回答时间:2017-5-9 13:45:52
淡定些,没有最好用的工具,只有实现自己需求最好的方法!
donatello1996 回答时间:2017-5-9 13:46:46
wofei1314 发表于 2017-5-9 13:45
淡定些,没有最好用的工具,只有实现自己需求最好的方法!

就是,不管白猫还是黑猫,抓到老鼠就是好猫,哪个好用用哪个
12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版