工具/软件:Code Composer Studio
大家好、我希望大家都做得很好。 我正在尝试将 QVGA TFT 显示屏与电路板连接。 我将使用 DRM 以及一些 API。 我已通过数据表中提到的相同步骤、 使用端口 A2、A3、A4、A5配置 SSI0模块。
连接如下所示。
A2 (SCLK)进入 LCD 的时钟引脚
A3 (FSS)进入 LCD 的 CS (片选或从器件)
A4 (RX)进入 LCD 的 MISO
A5 (TX)进入 LCD 的 MOSI
(在 LCD 板上)直流引脚数据或命令选择我 不知道这是什么、我对这个引脚感到困惑。 我还记得、在课堂中 、主器件告诉我数据是 通过 MOSI 线路发送到从器件的、那么为什么这个数据引脚呢? 但是、我 已将其作为输出引脚包含在代码中。
( 在 LCD 板上)复位低电平有效
我还提到 一个关于同一主题的旧帖子,试图实施该帖子,但迄今为止我没有成功。
显示屏上没有显示任何 内容、但是我正在尝试显示文本。 我们非常感谢您的帮助。 谢谢
#include #include #include "driverlib/sysctl.h" #include "tm4c123ghp6.h" #include "driverlib/gpio.h" #include "inc/hw_memmap.h" // pA 2、3、4、5 void spi_ini (void){ SYSCTL_RCGCSSI_R = 0x01;//选择 SSI0模块
SYSCTL_RCGC2_R = 0x01;//激活端口 A 的时钟
GPIO_PORta_AFSEL_R = 0x3C;//选择 PA 2、3、4、5以实现替代功能
GPIO_Porta_PCTL_R = 0x00222200;//使用相对端口配置 SSI
GPIO_Porta_DEN_R = 0x3C;//启用数字模式
GPIO_PORta_PUR_R= 0x3C;//上拉
SSI0_CR1_R= 0x00;//禁用 SSI
SSI0_CC_R=0x00;//使用主时钟
SSI0_CPSR_R=64;//选择时钟的分频值
SSI0_CR0_R=0x07;// 8位数据传输
SSI0_CR1_R=0x02;//启用 SSI SysCtlPeripheralEnable (SYSCTL_Periph_GPIOE);// PE4 = D/C'、PE5 =复位
GPIOPinTypeGPIOOutput (GPIO_Porte _BASE、GPIO_PIN_4|GPIO_PIN_5);
GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_5、0x20);
SysCtlDelay (SysCtlClockGet ()/2);//延迟
GPIOPinWrite (GPIO_Porte _BASE、GPIO_PIN_5、0);
SysCtlDelay (SysCtlClockGet ()/2); } void send_Byte (char data){ SSI0_DR_R=数据; while (SSI0_SR_R&0x01=0){}; } void send_str(char*buffer){ while (* buffer!=0){ send_Byte (*缓冲区); Buffer++; } } int main (void) { SysCtlClockSet (SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHz|SYSCTL_OSC_MAIN); spi_ini(); send_str ("hello SPI"); }