stm32f103 SPI单线TX发数据来驱动LCD

有一黑白LCD,有CS/SI/SCK三线,时序满足SPI时序,但STM32的SPI有四线NSS/MOSI/SCK/MISO,这里MISO没有用到。因此可以使用SPI的单线发送模式进行驱动LCD。

关键代码如下:

/* SPI_MASTER configuration -*/
      SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;//这里使用单线发送模式
      SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
      SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
      SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
      SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;
      SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;
      SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;
      SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_LSB;
      SPI_Init(SPI1, &SPI_InitStructure);

      /* Enable SPI_MASTER */
      SPI_Cmd(SPI1, ENABLE);

经试验发现,在单线模式下,只能使用SPI_I2S_FLAG_BSY标志来判断设备是否空闲,而不能使用SPI_I2S_FLAG_TXE发送完成标志。

SPI1->DR = byte;
    while((SPI1->SR & SPI_I2S_FLAG_BSY) != RESET);  //等待SPI忙完,这里不能使用SPI_I2S_FLAG_TXE发送完成标志,只能使用SPI_I2S_FLAG_BSY标志 

 

记录在此,以防忘记。

posted on 2013-09-28 21:25  swblog  阅读(3776)  评论(0编辑  收藏  举报

导航