scfor123456 发表于 2019-12-18 18:55:54

接上个帖子,设置SPI出现问题

https://www.stmcu.org.cn/module/forum/thread-622619-1-1.html

SPI1->CR1 = SPI_CR1_MSTR | 0x28;//48M/64=0.75M
SPI1->CR2 = SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN | SPI_CR2_RXNEIE | SPI_CR2_FRXTH |SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0; /* (2) */
SPI1->CR1 |=SPI_CR1_SSM;
SPI1->CR1 |= SPI_CR1_SPE;
按这个顺序配置,结果SPE使能不了,MSTR位也清0了。我本意是改TI模式为MOTO模式的,原先配置是这样的:
SPI1->CR1 = SPI_CR1_MSTR | 0x28;//48M/64=0.75M
SPI1->CR2 = SPI_CR2_TXDMAEN | SPI_CR2_RXDMAEN | SPI_CR2_FRF| SPI_CR2_RXNEIE | SPI_CR2_FRXTH |SPI_CR2_DS_2 | SPI_CR2_DS_1 | SPI_CR2_DS_0; /* (2) */
SPI1->CR1 |= SPI_CR1_SPE; /* (3) */

butterflyspring 发表于 2020-1-7 17:35:20

接之前的帖子,改模式不能根本解决你说的问题。从原理上讲,SPI是同步通讯,在时钟边缘采集数据,如果这时候干扰,是不能采集准确的。 但是一般错位有开关SPI的时间同步异常可能,建议你检测一下:)

scfor123456 发表于 2020-1-7 17:55:49

改了数据线和时钟线的干扰不会导致数据错位,但NSS的干扰解决不了。

liuquan3000 发表于 2020-3-2 22:40:12

如果干扰导致数据不对,只能用CRC校验,如果不对,重发吧
页: [1]
查看完整版本: 接上个帖子,设置SPI出现问题