在STM32F030,070参考手册内有这样一句话。
The read access must be always aligned with the RXFIFO threshold configured by the FRXTH bit in SPIx_CR2 register.(P649)
而FRXTH默认为0,即两个字节的宽度。直接读取DR寄存器,从FIFO中返回的是两个字节的数据,而在16位向8位的强行数据转换到时候,自然高位被丢弃,读取的数据就不对了。
给FRXTH置1,读操作会从接收FIFO中取单字节数据到DR去,这样就是单字节的访问。
用寄存器操作要注意DR寄存器的访问宽度。
希望有帮助:) |