蓝色·冰川 发表于 2017-5-18 16:32:27

为什么stm8s的spi发送数据循环移位了2位?

stm8s003fp3,主模式,软件管理nss=1.msb先发,发送到74hc595。发送数据0101,0011,发现595显示的数据是0100,1101。移位寄存器移位了2位后,数据时钟才开始发出去了。void spi_init(){
RCC_SPI_ON;//spi模块时钟开
SPI_CPOL0;
SPI_CPHA0;
SPI_MSB;
SPI_M;//主模式
SPI_LINE_TWO;//双线全双工
SPI_LINE_TXRX;
SPI_DATACLK_DIV256;//数据时钟分频256
SPI_NSS_ON;
SPI_NSS1;
SPI_TXE_IE;
//IE_ON;
SPI_ON;
}

使用查询标志法发数据。

qpx 发表于 2017-5-18 18:01:20

:):):)

蓝色·冰川 发表于 2017-5-19 01:52:24

问题找到了,查询的标志错了,之前一直查询的txe标志,晚上看stm32说明书,txe并非发完置一,而是数据搬到移位寄存器就置一。改成查询BSY正常了。
页: [1]
查看完整版本: 为什么stm8s的spi发送数据循环移位了2位?