高级会员

- 积分
- 676
- 金钱
- 676
- 注册时间
- 2018-8-9
- 在线时间
- 158 小时
|
本帖最后由 maidilong 于 2025-5-21 13:42 编辑
以前在使用SPI的时候都是使用全双工模式,今天想试一下SPI的双线仅读模式SPI_Direction_2Lines_RxOnly,但是很奇怪,得到的数据总是有点出错,不完全对。
我的理解是 双线全双工 (SPI_Direction_2Lines_FullDuplex),双线只接收 (SPI_Direction_2Lines_RxOnly),单线只接收 (SPI_Direction_1Line_Rx)、单线只发送模式(SPI_Direction_1Line_Tx)
但是从字面理解,感觉双线只接收 (SPI_Direction_2Lines_RxOnly)和单线只接收 (SPI_Direction_1Line_Rx)好像没有什么区别啊~~都是没有发送,只有接收,
我的情况是这样,双线全双工的时候,SPI用2分频(36M)和4分频(18M),读W25Q128的图片数据是正常的,显示到LCD也正常,但是用单线只接收 (SPI_Direction_1Line_Rx)模式就出问题了,显示到LCD不正常,用逻辑分析仪看了一下,从W25Q128引脚出来的数据是完全正确的,应该是SPI接收数据进入MCU后出的问题,把SPI频率设置到64分频(1M左右)数据就正确了。1M的频率这么慢才正常,这不应该啊。
难道是双线只接收 (SPI_Direction_2Lines_RxOnly)的频率非常快?只要使能SPI就会自动产生,SPI从W25Q128读到的数据我没有及时从DR数据寄存器取出造成覆盖了?从我的程序来看也不应该啊~
我个人目前的感觉是,双线只接收 (SPI_Direction_2Lines_RxOnly)模式的时钟只要使能SPI就会自动产生,感觉时钟信号非常不稳,要用很低的频率来使用?
|
|