打印
[活动专区]

【AT-START-M412测评】+ SPI 1.44寸LCD显示

[复制链接]
90|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#申请原创#
正好手上有个SPI的屏幕,顺便验证一下LCD的功能以及SPI的性能
还是打开work bench,将SPI初始化,使用spi1功能;
1、选择主机双线单向只发模式,因为屏幕暂时不需要读功能,只写。
2、最大就只能8分频,22.5MHZ速率,用4分频有45MHZ频率,超过了36MHZ限制频率,无法配置。
3、CS信号使用软件信号,一般都是自行控制cs信号
4、DMA设置为SPI1_TX,自动配置通道与传输方向,配置dma是为了不占用cpu,通过硬件的方式进行传输,增加传输速率,刷屏帧率就上去了
5、配置2个SPIGPIO,一个是MOSI,一个是CLK,主要是主机输出,从机接收,从机不返回数据
6、配置1个CS、1个DC、1个RES、1个DIR共4个输出GPIO

配置完成后开始生成代码

编译下载都没问题,然后开始添加LCD驱动
lcd驱动都是移植厂家给的驱动代码就可以了
新增了dev_disp.c的驱动,LCD.c的驱动,gui.c 的驱动
lcd.c主要是显示的驱动,写寄存器,写坐标及写点函数的构建
gui.c主要是构建显示内容函数,画点、画圆、画方形、画圆形、画图片等函数
dev_disp.c主要是做业务上的处理,比如显示数据变化,显示图片变化等函数构建


主要修改点
1、delay函数
#define        delay_ms(n)        vTaskDelay(n)
使用freertos的延时函数,不使用自带的函数防止卡线程
2、spi发送函数
void SPI_WriteByte(u8 byte)
{       
        spi_i2s_data_transmit(SPI1, byte);
        while(spi_i2s_flag_get(SPI1, SPI_I2S_RDBF_FLAG) == RESET);
        spi_i2s_data_receive(SPI1);
        while(spi_i2s_flag_get(SPI1, SPI_I2S_BF_FLAG) != RESET);
}
发完之后需要把接收也处理了,防止下次发送时异常,每次发一个Byte。
后续可以优化这个地方,使用多个字节发送,但是要注意的是,高字节与低字节的问题。
3、 所有的GPIO控制都用宏定义,设置TRUE或FALSE,方便操作和读写性,当然每个人的编程习惯不一样,按自己的风格来就行。
#define        CS(stat) gpio_bits_write(GPIOA,GPIO_PINS_3,stat)
#define        RES(stat) gpio_bits_write(GPIOA,GPIO_PINS_5,stat)
#define        DC(stat) gpio_bits_write(GPIOA,GPIO_PINS_7,stat)
#define        BLK(stat) gpio_bits_write(GPIOB,GPIO_PINS_1,stat)
4、初始化和显示
这里是在freeftos上进行初始化,创建了一个task,申请了128字节的RAM空间,最高优先级。
现在只有1个任务在运行,就没有处理其它优先级的问题了。
void my_task01_func(void *pvParameters)
{
  /* add user code begin my_task01_func 0 */

  /* add user code end my_task01_func 0 */

        dev_disp_init();
  /* Infinite loop */
  while(1)
  {
  /* add user code begin my_task01_func 1 */
        dev_disp_ui1();

  /* add user code end my_task01_func 1 */
  }
}
显示了一个图片



2159768387125dea68.png (143.06 KB )

2159768387125dea68.png

556076838790feb007.jpg (5.07 MB )

556076838790feb007.jpg

3996868387b087f764.png (12.09 KB )

3996868387b087f764.png

使用特权

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

本版积分规则

42

主题

183

帖子

3

粉丝