打印
[应用相关]

NUCLEO串口屏显示

[复制链接]
868|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
500days|  楼主 | 2016-4-23 22:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天来做个比较复杂一点的。
用到的硬件如下:





这是个串口屏,需要用到SPI接口。
SPI外设
SPI是串行通信的一种,与UART类似。不过SPI一般是同步的,而UART可以是同步,也可以是异步。与UART一样,它也可以有效的节省通信线路。
MOSI 主设备输出/从设置输入管脚,该管脚在主模式下发送数据,在从模式下接受数据主设备输入/从设备输出管脚,该管脚在从模式下发送数据,在主模式下接收数据
MISO 主设备输入/从设备输出管脚,该管脚在从模式下发送数据,在主模式下接收数据
SCK 同步时钟
NSS 从设置选择,这是一个可选的管脚,用来选择主/从设置,他的功能是用来作为片选管脚,让主设备可以单独的与特定从设备通讯,避免数据线上的冲突,从设备的NSS管脚可以由主设备当做一个标准的IO来驱动。可以是硬件或软件来实现。
用来控制LCD的话,一般我们主要用于向LCD输出信息,所以只要用到MOSI即可。下面是配置信息:
接下来配置SPI的工作参数:





这样,SPI的配置就差不多了。
LCD控制器
一般来说,点屏的话需要参考如下资料
数据手册
硬件原理图
沙发
500days|  楼主 | 2016-4-23 22:10 | 只看该作者
下面语句指明了各引脚的连接方式:
#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;
  

}


使用特权

评论回复
板凳
500days|  楼主 | 2016-4-23 22:11 | 只看该作者
有了这几个基本的函数,就可以来操控LCD了,如初始化、写入文本、图形等信息。详情请参考代码。
显示效果
下面有几张显示效果。






                    

使用特权

评论回复
地板
cnb12345| | 2016-4-24 09:40 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

120

帖子

3

粉丝