4151|2

7

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

【GD32E503评测】基于uCOSIII项目实现U盘功能1 [复制链接]

 

前言:

在驱动LCD屏幕的时候,需要用到字库、图片等数据,。比方我们要显示汉字那么流程如下制作字库生成.bin文件,例如通过字库制作文件生成gb2312.bin文件,并将gb2312.bin文件写入flash。Mcu解析中文字符,得到gb2312索引值,根据字库的大小计算得到flash的位置。读取相应数据。Mcu将读取到的数据发送给lcd屏幕进行显示。

 

在实现上述过程时,遇到了个问题,那就是gb2312.bin 这个文件该如何传输到flash中呢?我有如下几个方法:

  1. 通过串口采用Ymodem协议写入到flash。
  2. 通过flash 烧写工具(不过需要将flash拿下来,烧写完再焊上去)
  3. 通过usb-hid采用Ymodem协议写入到flash。
  4. 通过虚拟U盘的形式将文件写到flash。

嗯……大家如果有什么好想法,可以指点一下,我就想到上述几种方式。

所以,综上,我认为通过gd32e503v模拟个u盘,在pc端通过将bin文件写入到U盘中这种方式最为方便。

于是查看了原理图,USB口时有解出来的:

同时查看了USB的示例代码:

官方只提供了两个例程,一个是键盘、一个是CDC类。U盘呢,属于MSC这类,可惜官方没有提供。

不过我们仔细找找官方资料可以发现,官方还是提供了一些必要的库文件,如下图,usbd表示usb device,usbh表示usbhost。这些必要的驱动代码是都有的,进一步的查看usbd_library这个文件可以发现官方其实有提供msc的示例demo的。

 

 

好了,以上万事俱备只欠冻手了。

 

基于目前的现状,我们已经创建了uCOSIII的框架了。于是打算在这个基础上添加。

 

  1. 首先将官方23_USBD_Keyboard移植到uCosIII的框架中,并测试是否正常。
  2. 根据官方提供的usb msc文件,修改23_USBD_Keyboard这个工程,实现U盘功能。

 

打开23_USBD_Keyboard 工程,可以看到,工程结构如下,Application为用户修改的地方,USBD_Drivers、USBD_Devices、USBD_Class 这三个文件,都是官方提供的,一般无特殊需求,不需要修改,只需要添加进来即可。

我们依葫芦画瓢,在自己工程上建立相应的文件、并导入

然后编译、期间会有很多头文件找不到,我们到demo工程里看看,找到相应头文件路径,一并导入即可。之后,会发现还有些函数接口找不到,因此我还添加了USBD_User的文件夹,便于修改。

其中需要注意的是:gd32e_50x_it.c这个文件 是中断函数入口。因此需要将Demo里面的部分内容,拷贝到我们的工程中,如下几个接口函数都要拷贝:

 

 

期间会有些编译错误、找不到头文件、找不到函数啥的,这个基本功我就不细说了。

 

进一步的,写main函数代码了

先前创建了两个线程,所以,我们在task2 中添加如下代码:(其实也就是把官方例程的main函数拷贝进来)

然后编译、通过后即可Debug查看效果。

不过出现了问题:

而且开发板不能再Debug、或者烧录了。。这可吓坏了我,不知道什么原因。不过呢,好在gd32e503v开发板将boot0、boot1 引出来,可以方便的修改mcu的启动方式。(从flash、从ram 。。。具体大家自定百度,stm32的Boot0 Boot1 )为啥是stm32???因为,gd几乎完美兼容stm32呀~!国产IC之最。我觉得太牛逼了。

将boot0、boot1拉高,flash烧写选择擦除全部,然后重新上电,即可进行flash烧写

 

因为是我们的代码引起的芯片不能烧写问题,所以,修改下代码:

这样,再次将boot0、boot1 置低,即可进行debug了。芯片终于正常了。

以上,实现U盘功能才刚开始。

就花了我好半天的功夫、未完、待续。。。

 

 

最新回复

有点意思,解决问题就是提高   详情 回复 发表于 2021-1-27 22:22
点赞 关注
 
 

回复
举报

144

帖子

0

TA的资源

版主

沙发
 

开发新技能,期待!

 
 
 

回复

7452

帖子

2

TA的资源

五彩晶圆(高级)

板凳
 

有点意思,解决问题就是提高

个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表