[活动专区] 【AT-START-M412测评】+ SPI 1.44寸LCD显示

[复制链接]
 楼主| 穿西装的强子 发表于 2025-5-30 07:41 | 显示全部楼层 |阅读模式
#申请原创#
正好手上有个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
9785668387201c5866.png
配置完成后开始生成代码
4453768387455984ea.png
编译下载都没问题,然后开始添加LCD驱动
lcd驱动都是移植厂家给的驱动代码就可以了
新增了dev_disp.c的驱动,LCD.c的驱动,gui.c 的驱动
lcd.c主要是显示的驱动,写寄存器,写坐标及写点函数的构建
gui.c主要是构建显示内容函数,画点、画圆、画方形、画圆形、画图片等函数
dev_disp.c主要是做业务上的处理,比如显示数据变化,显示图片变化等函数构建

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

  4.   /* add user code end my_task01_func 0 */

  5.         dev_disp_init();
  6.   /* Infinite loop */
  7.   while(1)
  8.   {
  9.   /* add user code begin my_task01_func 1 */
  10.         dev_disp_ui1();

  11.   /* add user code end my_task01_func 1 */
  12.   }
  13. }
显示了一个图片
5461068387925cfcbb.png


2159768387125dea68.png
556076838790feb007.jpg
3996868387b087f764.png
星辰相随 发表于 2025-7-18 13:53 | 显示全部楼层
这个测评挺有意思的,小猫也不错,楼主用的什么gui框架?
中国龙芯CDX 发表于 2025-7-22 23:15 | 显示全部楼层
SPI 1.44寸LCD显示非常不错的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

259

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部