初级会员

- 积分
- 64
- 金钱
- 64
- 注册时间
- 2015-11-28
- 在线时间
- 4 小时
|
10金钱
STM32与flash用SPI通讯,发现收发过程都不连续,通讯速度提不上来,读V10参考手册,上面是这样讲的,连续和非连续传输
当在主模式下发送数据时,如果软件足够快,能够在检测到每次TXE 的上升沿( 或TXE 中断) ,并立即在正在进行的传输结束之前写入SPI_DR寄存器,则能够实现连续的通信;此时,在每个数据项的传输之间的SPI时钟保持连续,同时BSY位不会被清除,如果软件不够快,则会导致不连续的通信;这时,在每个数据传输之间会被清除,通讯连续图如图一所示,非连续图如图二所示,
我自己用战舰板f103,做SPI实验,读写W25Q64flash,将读写频率设成18MHz,发现通讯正常,读写每个字节也正常,但是读写每个字节都不连续,测得间隔时间为1.9us左右,实际读写每个字节的时间为0.5us左右,这样的话通讯速率就大大降低了,折算成每个字节读写时间为2.4us左右,还不到1Mbyte/s,工程应用的话速率还是不够啊,不知各位大神有什么办法,将间隔时间给他干掉,最好的结果是做成手册所描述的那样连续传输,不知道是不是那个参数设置有问题,仔细研读手册发现,当TXE置位时,软件是马上就去读TXE,延时不应该超过1us啊,搞不明白,哪里出问题了,请大家指教!图三和四是我实测的,图三上面通道一的信号是SCK,下面的是DO,图四是SCK。
|
最佳答案
查看完整内容[请看2#楼]
问题一:关键问题为什么读TXE要这么久?查看汇编后的语句好像只有2两条,怎么解
问题二:SPI是个环形移位寄存器,非FIFO,判断TXE,若为1,则表明TX_buffer为空,软件写入,同时TXE置零,系统自动将tx_buffer的数据并行送到移位寄存器,一个CLK后,txe置1,读手册,感觉整个过程快速且智能!
|