程 序: CLK_PeripheralClockConfig(CLK_PERIPHERAL_SPI, ENABLE); SPI_DeInit(); SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_4, SPI_MODE_MASTER, SPI_CLOCKPOLARITY_HIGH, SPI_CLOCKPHASE_2EDGE, SPI_DATADIRECTION_1LINE_TX, SPI_NSS_SOFT, 0x07); SPI_Cmd(ENABLE); void OLED_WriteCmd( uchar sendData) { GPIO_WriteLow(GPIOA, GPIO_PIN_3);/*片选信号*/ GPIO_WriteLow(GPIOC, GPIO_PIN_4);/*0表示后面是命令,1表示后面是数据*/ SPI_SendData(sendData); while (!SPI_GetFlagStatus(SPI_FLAG_TXE)); GPIO_WriteHigh(GPIOA, GPIO_PIN_3); } 黄色位置的波特率设置不能设置为8或16等更大数置,只为2或4可以。实在不能理解,请大侠明示 |
// 1Mhz,最快可以用10Mhz
SPI_Init(SPI_FIRSTBIT_MSB, SPI_BAUDRATEPRESCALER_16, SPI_MODE_MASTER, SPI_CLOCKPOLARITY_LOW, SPI_CLOCKPHASE_1EDGE,
SPI_DATADIRECTION_2LINES_FULLDUPLEX, SPI_NSS_SOFT, 7);
SPI_IntEn(0, 1);
enableInterrupts();
SPI_Cmd(ENABLE);
可以啊,上面设置就是啊。我没试过,速率肯定可以设置的
评分
查看全部评分
我说的是STM32F10xx系列的,但是我看了其他系列也是可以设置的,这个可以自己选择的,没有固定的
评分
查看全部评分
STM8S
评分
查看全部评分
这样的情形,应该从 OLED屏的接口来查找问题。
1、从设备的通讯速率到底能达到多快?
2、高速时,时序是否良好?
3、特别是看边沿是否OK?