求助论坛里的大神
我stm8 spi(主机模式)发送数据,但是RXNE总是为1,而且OVR也为1,不知道怎么回事,我也没有接收数据呀,我的miso配置的是“GPIO_MODE_IN_PU_NO_IT”,是不是错了?另外,我发送数据的时候clk有方波出来,但是mosi引脚却没有变化没看到楼主对SPI的初始化,STM8 SPI初始化代码是:
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); wenyangzeng 发表于 2018-9-21 10:02
没看到楼主对SPI的初始化,STM8 SPI初始化代码是:
SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_2,...
兄弟,引脚的配置我不知道有没有错,麻烦帮我检查一下,拜托拜托:
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 本帖最后由 wenyangzeng 于 2018-9-21 10:17 编辑
tanyopoom 发表于 2018-9-21 10:10
兄弟,引脚的配置我不知道有没有错,麻烦帮我检查一下,拜托拜托:
GPIO_Init(GPIOC, GPIO_PIN_5, GPIO ...
ST官方代码很多可以参考的:
SPI_CLOCKPHASE_2EDGE, SPI_DATADIRECTION_2LINES_FULLDUPLEX, SPI_NSS_SOFT, 0x07);是0还是7完全可以动手试一下就知道了。
另外,好像设置SPI无需再设置GPIO
wenyangzeng 发表于 2018-9-21 10:02
没看到楼主对SPI的初始化,STM8 SPI初始化代码是:
SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_2,...
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以上),不知道我有没有理解错 先跑个SPI的样例程序吧。
你这请教问题,又不附上工程,谁知道你都干了些什么,还需要坛友一点一点挤牙膏似的,在去问你才告诉吗? tanyopoom 发表于 2018-9-21 10:20
SPI_Init(SPI_FIRSTBIT_MSB,
SPI_BAUDRATEPRESCALER_64,
SPI_MODE_MASTER,
那个0x07是CRCPolynomial,不是分频系数! SPI模式、所连接器件你都不说一下? stm1024 发表于 2018-9-21 15:01
SPI模式、所连接器件你都不说一下?
我说了主模式呀,嗯、、、没有连接器件,因为主模式的clk和mosi应该不用连接其他东西也能发数据的吧 wenyangzeng 发表于 2018-9-21 10:42
那个0x07是CRCPolynomial,不是分频系数!
嗯嗯,我说的是SPI_BAUDRATEPRESCALER_64,这个我示波器抓了一下,确实是250KHZ
页:
[1]
2