spi.c 1.1 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /*
  2. STM32: SPI: LCD — Вы всё делаете не так !
  3. https://habrahabr.ru/post/276605/
  4. */
  5. // передача данных на дисплей
  6. void SPI2_SendByte(uint8_t sendData)
  7. {
  8. while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
  9. SPI_I2S_SendData(SPI2, sendData);
  10. }
  11. // определение области для вывода
  12. void ili9341c_SetWindow(uint16_t ystart, uint16_t xstart, uint16_t yend, uint16_t xend)
  13. {
  14. . . .
  15. GPIO_ResetBits(GPIOB, GPIO_Pin_12); // DC=0;
  16. SPI2_SendByte(LCD_PAGE_ADDR);
  17. //ждем пока команда уйдет на дисплей (а не перейдет в shift reg)
  18. while (SPI_I2S_GetFlagStatus(SPI2,SPI_FLAG_BSY)!=RESET);
  19. GPIO_SetBits(GPIOB, GPIO_Pin_12); // DC=1;
  20. SPI2_SendByte(xstart>>8); // данные
  21. SPI2_SendByte(xstart&0xFF); // передаются
  22. SPI2_SendByte(xend>>8); // в непрерывном
  23. SPI2_SendByte(xend&0xFF); // режиме без пауз !
  24. // ждем пока данные передадутся до конца
  25. while (SPI_I2S_GetFlagStatus(SPI2,SPI_FLAG_BSY)!=RESET);
  26. . . .
  27. }