我stm8 spi(主机模式)发送数据,但是RXNE总是为1,而且OVR也为1,不知道怎么回事,我也没有接收数据呀,我的miso配置的是“GPIO_MODE_IN_PU_NO_IT”,是不是错了?另外,我发送数据的时候clk有方波出来,但是mosi引脚却没有变化
SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_2, SPI_MODE_MASTER, SPI_CLOCKPOLARITY_HIGH, SPI_CLOCKPHASE_2EDGE, SPI_DATADIRECTION_2LINES_FULLDUPLEX, SPI_NSS_SOFT, 0x07);
SPI_Cmd(ENABLE);
评分
查看全部评分
兄弟,引脚的配置我不知道有没有错,麻烦帮我检查一下,拜托拜托:
GPIO_Init(GPIOC, GPIO_PIN_5, GPIO_MODE_OUT_PP_HIGH_FAST); //clk
GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_OUT_PP_HIGH_SLOW); //MOSI
GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_IN_PU_NO_IT); //MISO
还有,spi初始化配置最后一个一定要是0x07吗?我的是0x00
ST官方代码很多可以参考的:
SPI_CLOCKPHASE_2EDGE, SPI_DATADIRECTION_2LINES_FULLDUPLEX, SPI_NSS_SOFT, 0x07);是0还是7完全可以动手试一下就知道了。
另外,好像设置SPI无需再设置GPIO
SPI_Init(SPI_FIRSTBIT_MSB,
SPI_BAUDRATEPRESCALER_64,
SPI_MODE_MASTER,
SPI_CLOCKPOLARITY_HIGH,
SPI_CLOCKPHASE_2EDGE,
SPI_DATADIRECTION_2LINES_FULLDUPLEX,
SPI_NSS_SOFT, 0x00);
这是我的spi配置,芯片是16MHZ的,所以波特率分频值我算了一下不知道对不对,16000000除以64等于250KHZ(上次我看到网上说频率要在500KHZ以内,200KHZ以上),不知道我有没有理解错
你这请教问题,又不附上工程,谁知道你都干了些什么,还需要坛友一点一点挤牙膏似的,在去问你才告诉吗?
评分
查看全部评分
那个0x07是CRCPolynomial,不是分频系数!
我说了主模式呀,嗯、、、没有连接器件,因为主模式的clk和mosi应该不用连接其他东西也能发数据的吧
嗯嗯,我说的是SPI_BAUDRATEPRESCALER_64,这个我示波器抓了一下,确实是250KHZ
模式指的是SPI的CPHA和CPOL,一些SPI设备只支持一种或两种模式。
评分
查看全部评分
评分
查看全部评分