1234567891011121314151617181920212223242526272829303132333435 |
- /*
- STM32: SPI: LCD — Вы всё делаете не так !
- https://habrahabr.ru/post/276605/
- */
- // передача данных на дисплей
- void SPI2_SendByte(uint8_t sendData)
- {
- while (SPI_I2S_GetFlagStatus(SPI2, SPI_I2S_FLAG_TXE) == RESET);
- SPI_I2S_SendData(SPI2, sendData);
- }
- // определение области для вывода
- void ili9341c_SetWindow(uint16_t ystart, uint16_t xstart, uint16_t yend, uint16_t xend)
- {
- . . .
- GPIO_ResetBits(GPIOB, GPIO_Pin_12); // DC=0;
- SPI2_SendByte(LCD_PAGE_ADDR);
- //ждем пока команда уйдет на дисплей (а не перейдет в shift reg)
- while (SPI_I2S_GetFlagStatus(SPI2,SPI_FLAG_BSY)!=RESET);
- GPIO_SetBits(GPIOB, GPIO_Pin_12); // DC=1;
- SPI2_SendByte(xstart>>8); // данные
- SPI2_SendByte(xstart&0xFF); // передаются
- SPI2_SendByte(xend>>8); // в непрерывном
- SPI2_SendByte(xend&0xFF); // режиме без пауз !
- // ждем пока данные передадутся до конца
- while (SPI_I2S_GetFlagStatus(SPI2,SPI_FLAG_BSY)!=RESET);
- . . .
- }
|