|
@@ -0,0 +1,32 @@
|
|
|
+/**
|
|
|
+ * Разработка → 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);
|
|
|
+
|
|
|
+ while (SPI_I2S_GetFlagStatus(SPI2,SPI_FLAG_BSY)!=RESET); //ждем пока команда уйдет на дисплей (а не перейдет в shift reg)
|
|
|
+
|
|
|
+ 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); // ждем пока данные передадутся до конца
|
|
|
+. . .
|
|
|
+}
|