本帖最后由 baiyunfei.k.f 于 2013-5-22 17:08 编辑
这两天用到了STM32F051的SPI接口,我将SPI的数据宽度定位8位,在自己的软件中没有用库函数,发数据时直接写寄存器SPI1->DR = (uint8_t)Data;费了不少时间没调通,后来看了下库函数SPI_SendData8,发现发送8位数据位时:
spixbase = (uint32_t)SPIx;
spixbase += 0x0C;
*(__IO uint8_t *) spixbase = Data;
而发送16位数据才是SPIx->DR = (uint16_t)Data;
原先用STM32F103时用SPI发送8位数据就是直接SPI1->DR = (uint8_t)Data;F103的SPI会根据数据位的设置自动从DR寄存器的LSB截取数据,这点和F051不同。 |