2200|0

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

SPI总线驱动12864显示屏 [复制链接]

数据通过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
请大神解答,多谢

 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表