打印

惨痛经历,STM32L4的SPI总线真坑

[复制链接]
573|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
第十代火影|  楼主 | 2018-7-9 14:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近想把潘多拉板子的SD SPI驱动增加DMA功能,结果发现STM32L4的SPI总线巨坑,
第一,不用SPI DMA功能时,接收一字节数据之前一定要发送一字节无效数据以保证时钟有效,否则就接收不到;
第二,启用DMA功能,发送没问题,可接收就一直不能等待DMA传输结束,原因就是第一点,接收时,DMA每传输一
         字节之前没有发送一字节无效数据以保证时钟有效,坑
第三,我试过不用HAL库,用LL库重写SD SPI驱动,发现SD卡初始化完成后就使能SPI TX和RX的DMA功能,会导致在不用
         DMA传输的情况下读数据出错,最典型就是读SD卡的CSD和CID寄存器(即块读),其他SD卡的指令读写没问题,坑
第四,LL库并不完善,STM32L4的SPI总线添加了FIFO功能,导致每次传输都要检查FIFO是否为空和总线忙,F1和F4没这情况,
         按照F1和F4的思路会掉坑
最后一点,潘多拉板子裸机例程的SD SPI驱动中SD卡初始化有些问题,我用V2HC的SD卡一直初始化失败,直到我参考官方
SD SPI初始化流程(即Physical Layer Simplified Specification Version 6.00文档):

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

363

主题

363

帖子

0

粉丝