这样,SPI的配置就差不多了。
LCD控制器
一般来说,点屏的话需要参考如下资料
数据手册
硬件原理图
下面语句指明了各引脚的连接方式:#define LCD_RESET_CLEAR HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET)
#define LCD_RESET_SET HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET)
#define LCD_CS_CLEAR HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET)
#define LCD_CS_SET HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET)
#define LCD_DC_CLEAR HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_RESET)
#define LCD_DC_SET HAL_GPIO_WritePin(GPIOC, GPIO_PIN_1, GPIO_PIN_SET)
向控制器写入数据分为两种:命令及参数。当然有些命令还带返回值,这里都忽略了。
需要注意的是ILI9341中的数据,一般都是8位的,但是颜色数据都是16位的。
LCD命令及数据函数如下:void LCD_Write_Cmd(uint8_t cmd)
{
LCD_CS_CLEAR;
LCD_DC_CLEAR;
HAL_SPI_Transmit(&hspi1, &cmd, 1, 500);
LCD_CS_SET;
}
void LCD_Write_Dat(uint8_t dat)
{
LCD_CS_CLEAR;
LCD_DC_SET;
HAL_SPI_Transmit(&hspi1, &dat, 1, 500);
LCD_CS_SET;
}
void LCD_Write_Color(uint16_t color)
{
uint8_t dat;
LCD_CS_CLEAR;
LCD_DC_SET;
dat = color >> 8;
HAL_SPI_Transmit(&hspi1, &dat, 1, 50);
dat = color & 0xFF;
HAL_SPI_Transmit(&hspi1, &dat, 1, 50);
LCD_CS_SET;
}
|