数据通过SPI写入液晶屏没有反应,发送的是8位的字符,不知道是不是SPI配置的问题,代码如下: SPI端口的初始化: void spi_init()
{
SpiaRegs.SPICCR.all =0x0007; // 重置, 上升沿,8位字符位
SpiaRegs.SPICTL.all =0x0006; // 启用主模式, 正相,启用发送功能,使能中断
SpiaRegs.SPIBRR =0x007F; //设置波特率,波特率计算手册上有
SpiaRegs.SPICCR.all =0x0087; //enable SPI
SpiaRegs.SPIPRI.bit.FREE =1; // Set so breakpoints don't disturb xmission
} //-----------------写指令或者数据--------------------
void spi_xmit(Uint8 cmda, Uint8 data)
{
CS = 0;
DI = cmda; //将写入数据或者是命令进行赋值
SpiaRegs.SPITXBUF = data<<8; //写入SPITXBUF时是左对齐,而读入SPIRXBUF是右对齐
while(SpiaRegs.SPIFFTX.bit.TXFFST !=1){}
} void spi_fifo_init() //初始化 SPI FIFO 寄存器
{
SpiaRegs.SPIFFTX.all=0xE040;
SpiaRegs.SPIFFRX.all=0x2044;
SpiaRegs.SPIFFCT.all=0x0;
} SPI的GPIO配置: void InitSpiaGpio()
{
EALLOW; /* 使选定的引脚内部上拉 */
// 用户可以启用或禁用“拉”窗口
// 这将使指定的引脚的上拉电阻 GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0; // Enable pull-up on GPIO16 (SPISIMOA)
GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0; // Enable pull-up on GPIO17 (SPISOMIA)
GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; // Enable pull-up on GPIO18 (SPICLKA)
GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // Enable pull-up on GPIO19 (SPISTEA)CS位
GpioCtrlRegs.GPAPUD.bit.GPIO20 = 0; //di位,确定是输出的指令还是数据
GpioCtrlRegs.GPAPUD.bit.GPIO21 = 0; //rst位,发出复位信号 /* Set qualification for selected pins to asynch only */
// This will select asynch (no qualification) for the selected pins.
// Comment out other unwanted lines.
//GPIO输入限制选择寄存器GPxQSELy(x=A,B,C;y=1,2)指定了采样窗是3个采样点还是6个采样点。
/* 控制GPIO0到GPIO15为输入引脚时的模式. 有4种模式可选, 其中3种是与系统时钟同步, 第四种为非同步.
同步的3种还分为每个时钟波都更新一次, 连续3个采样都一样才更新, 和连续6个采样都一样才更新. */ GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 3; // Asynch input GPIO16 (SPISIMOA)异步转移模式
GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3; // Asynch input GPIO17 (SPISOMIA)
GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3; // Asynch input GPIO18 (SPICLKA)
GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 3; // Asynch input GPIO19 (SPISTEA)
GpioCtrlRegs.GPAQSEL2.bit.GPIO20 = 3; //di位
GpioCtrlRegs.GPAQSEL2.bit.GPIO21 = 3; //rst位,发出复位信号 /* Configure SPI-A pins using GPIO regs*/
// This specifies which of the possible GPIO pins will be SPI functional pins.
// Comment out other unwanted lines. GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 1; // Configure GPIO16 as SPISIMOA
GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 1; // Configure GPIO17 as SPISOMIA
GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 1; // Configure GPIO18 as SPICLKA
GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 0; // Configure GPIO19 as SPISTEA,配置成I/O端口
GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 0; //di位,配置成 I/O端口
GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 0; //rst位,发出复位信号 GpioCtrlRegs.GPADIR.bit.GPIO19 = 1; //设置GPIO19为输出,用于片选
GpioCtrlRegs.GPADIR.bit.GPIO20 = 1; //设置GPIO20为输出,用以判断输出的是数据还是指令
GpioCtrlRegs.GPADIR.bit.GPIO21 = 1; //引脚配置成输出
EDIS; GpioDataRegs.GPADAT.bit.GPIO19 = 1;
GpioDataRegs.GPADAT.bit.GPIO21 = 1; //rst位,发出复位信号
GpioDataRegs.GPADAT.bit.GPIO20 = 1; //设置GPIO20为输出,用以判断输出的是数据还是指令 }
#endif // endif DSP28_SPIA 请大神解答,多谢
|