一、开始测试时遇到的问题
刚开始的时候,求快,没仔细看文档,使用了模拟的spi和32自带spi方式直接上去调试都没有成功,没有反应,写0x06取反命令,再写入数据,一直返回高电平。板子上的灯时亮时灭的,还怀疑是不是板子有问题。
后来仔细看了文档,发现板子刚买来的时候,Tx引脚是通过跳线帽和GND接在了一起的,这是不正确的,应该去掉跳线帽。
二、STM32F407 SPI1/SPI2 DMA 方式读写 CH376S,代码我已经上传到下面链接:
https://download.csdn.net/download/weixin_41565755/10893974
内含SPI1和SPI2两个版本的代码,包括一个简单的说明.txt文件。这两个代码的版本读写是成功的,速度不是太快,但是优化后还是可以提高的。
三、SPI写u盘操作,底层驱动代码大致流程:
1、片选
2、写命令
3、写数据(此步用DMA方式)
4、写的同时读数据(无用)
5、禁止片选
在DMA控制器的控制下,在存储器和外部设备之间直接进行数据传送,在传送过程中不需要cpu的参与。
四、部分测试结果如下:
usb模块上的SPI可以配置到24M,但是在F407上实测84/4=21M出错。
可以将SPI设置为 84/8=10.5M 的频率,通过DMA传输测试,330KB用了7-8s时间。
传输数据分割成大数据块传输利于节省时间,分割成小数据块传输非常占用时间。
22字节*15000次,用了大概50s;220字节*1500次,用了7-8s。如果再增大数据块,注意最大输入问题。忘了接口输入是u8类型还是u16了。应该是u8类型,数据块不能超过255字节。