织女星开发板RISC-V核通过SPI协议驱动ARDUINO LCD模块(显示)

前言

第一次写这个博客,算是新手吧,刚好有这个机会,手边有VEGA的开发板和Arduino的LCD模块,做了点小东西,想和大家分享一下。
一开始只是想着通过SPI协议初始化LCD屏幕,然后发个字符串就好了,后来又尝试着显示图片,磕磕碰碰,修修改改居然也成功了,开心!把这些过程写下来,欢迎讨论,如有不足之处也希望大家不吝指教。

准备工作

  1. 焊接织女星开发板J1,J2,J3,J4的双排母座,以便与LCD屏通信。前段时间免费申请的织女星开发板出厂是没有焊接这些模块的,所以要自己焊一下。
  2. 参照《织女星开发板快速入门指南》把“hello world”示例在Eclipse IDE中跑一遍。拿到一个新的东西总是要先把最基本的摸索尝试一下嘛。
  3. 网上查看LCD模块的相关资料, 网址 贴在这里了:http://www.waveshare.net/wiki/2.8inch_TFT_Touch_Shield。

代码分析和添加

一般情况下支持SPI的设备都会有四根通信线,分别是SIN(数据输入),SOUT(数据输出),SCK(时 钟),CS(片选)。其中CS是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),对此芯片的操作才有效。
通讯是通过数据交换完成的, SPI是串行通讯协议,数据是一位一位的传输的。由SCK提供时钟脉冲,SIN,SOUT则基于此脉冲完成数据传输。数据输出通过SOUT线,数据在时钟上沿或下沿时改变,在紧接着的下沿或上沿被读取,完成一位数据传输,输入也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。
查看LCD模块的原理图得知CN2的3,4,5,6引脚分别对应着CS(片选信号),MOSI(主设备输出,从设备输入),MISO(主设备输入,从设备输出),CKL(时钟),如图1 所示。在本示例中,主设备是织女星开发板,从设备是LCD屏,所以MOSI对应着SOUT,MISO对应着SIN。暂时不考虑MISO的情形,因为目前要实现的功能只是用织女星开发板驱动LCD屏并打印,并不需要MISO的功能。除此之外,还有BL(backlight)和DC(command)信号线分别对应着CN2的2号和CN3的8号引脚。

Alt图1 LCD模块引脚

由物理连接可知LCD的CN2的2到6号引脚对应着织女星开发板J2的4,6,8,10,12号引脚,LCD的CN3的8号引脚对应着织女星开发板的J1的16号引脚。查看织女星开发板原理图《VEGA_Lite_SCH》文件,可知J2的4,6,8,10,12号引脚分别连接到PTB3, PTB6, PTB5, PTB7, PTB4,J1的16号引脚连接到PTB1。如图2所示。
图2 织女星开发板J1,J2端子
图 2 织女星开发板J1,J2端子

表1总结了织女星开发板和LCD模块的部分连接关系。
表1 PIN脚和端子对应表

信号名称 端子号 信号值
时钟CKL 12(J2) PTB4
片选CS 6(J2) PTB6
数据输出SOUT 8(J2) PTB5
数据输入SIN 10(J2) PTB7
背光BL 4(J2) PTB3
数据命令DC 16(J1) PTB1

在BOARD_InitPins()函数中根据以上分析,初始化相应的pin脚,具体实现如下:

void BOARD_InitPins(void) {
   

/* Clock Gate Control: 0x01u */
  CLOCK_EnableClock(kCLOCK_PortB);                  

/* PORTB4  is configured as LPSPI0_SCK */
  PORT_SetPinMux(PORTB, PIN4_IDX, kPORT_MuxAlt2); 
/* PORTB5  
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值