[MM32软件]

【MM32 eMiniBoard测评报告】+LCD Shield显示实验

[复制链接]
651|1
手机看帖
扫描二维码
随时随地手机跟帖
qjp1988113|  楼主 | 2020-6-4 13:51 | 显示全部楼层 |阅读模式
本帖最后由 qjp1988113 于 2020-6-4 14:02 编辑

eMini板上的资源不少了。最近在咸鱼上淘了个LCD SHIELD,挺好的,320*240分辨率,带触摸,带SD卡槽,可惜是卡槽和触摸不能同时使用,LCD是SPI方式驱动的。
我把eMini板上的ardui的接口焊上排母了。
2.jpg
eMINI板子自带的例程库里,我们选择NSS用软件控制的方式来做这个程序,因为它更灵活。
直接打开:
4.png
工程里面我们把引脚的定义修改成实际板子与屏连接的定义(这里其实无需修改,用的就是SPI2),
板子上SPI2同时驱动了25D16 flash ,可惜这个芯片的SPI的4个控制引脚完全和arduino座子引出的重合。
我一开始担心会不会有影响呢,实际上没影响。但是这样就不能同时使用板上的FLASH了,真可惜,为啥
FLASH的CS端不接到其他引脚呢。
查看代码的SPI配置,这里用的硬件SPI,也就没什么好说的了,注意设定的波特率不要太快。
6.png
我们最重要的是用到SPI读写的函数:
unsigned int SPIMReadWriteByte(unsigned char tx_data);
例子里面其他的一些什么readID的,都是操作FLASH的函数,不用理它。
LCD驱动的代码就不多说了,把读写单个字节的功能函数换成上面的那个,即可。
LCD除了SPI通讯,还有BKL背光和DC数据/命令2个引脚要设定。下图的LCD_CS其实就是SPI的NSS端
void lcd_port_init(void)
{

        GPIO_InitTypeDef tGPIO;
        
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB , ENABLE);

        
        //LCD-CS  PB12
        tGPIO.GPIO_Pin = LCD_CS_PIN;                           
        tGPIO.GPIO_Mode = GPIO_Mode_Out_PP;
        tGPIO.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(LCD_CS_GPIO, &tGPIO);
    //LCD-DC  PB1
    tGPIO.GPIO_Pin = LCD_DC_PIN;                           
        tGPIO.GPIO_Mode = GPIO_Mode_Out_PP;
        tGPIO.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(LCD_DC_GPIO, &tGPIO);
        //LCD-BKL PA15
        tGPIO.GPIO_Pin = LCD_BKL_PIN;                           
        tGPIO.GPIO_Mode = GPIO_Mode_Out_PP;
        tGPIO.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(LCD_BKL_GPIO, &tGPIO);

}
把读写操作里面的读写函数换成我们之前设定的那个SPI2读写。
8.png
到这一步,我们已经可以控制LCD显示写图形和字符什么的了。

移植下FATFS和SD卡的操作,SD卡的扩展是屏幕带的,有CS控制端,同样复用的SPI2。
完成后下载,显示图片:
1.jpg
在红色文字那一步程序上在增加XP2406触控函数,可以实现触控功能,就不多说了,具体查看代码:
3.jpg
代码移植的比较粗糙,SPI的NSS端在LCD里面和SPI里面都定义了,重复了,不过没影响。
下面附上代码:
ShowImage - 副本.rar (3.97 MB)

使用特权

评论回复
Candic12e| | 2021-1-10 12:50 | 显示全部楼层
哇,感谢分享,这个很有搞头

使用特权

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

本版积分规则

111

主题

627

帖子

2

粉丝