完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
用28027的SPI驱动12864,上电以后SPI发送的第一个数据没有作用,我发的第一条是清屏指令,如果先发送一个任意数据,再发送清屏指令就可以了,不知道这是为什么,急求高人解答,拜托了。
程序如下: #include "DSP28x_Project.h" #define CS GpioDataRegs.GPADAT.bit.GPIO19 void SPI_init(void); int get; char table0[]="北京邮电大学"; void Sendbyte(unsigned char bytes) [ while(SpiaRegs.SPISTS.bit.BUFFULL_FLAG); //上一字节完全移除时该位置为0,就是当发送缓冲器中没有数据时为0,有数据时为1 SpiaRegs.SPITXBUF=(bytes<<8); get=SpiaRegs.SPIRXBUF; //DELAY_US(100); ] void write_com(unsigned char com) [ //CS=1;DELAY_US(2); Sendbyte(0xf8);//DELAY_US(10); Sendbyte(com&0xf0);//DELAY_US(10); Sendbyte((com&0x0f)<<4);//DELAY_US(10); //CS=0;DELAY_US(2); ] void write_data(unsigned char dat) [ //CS=1;DELAY_US(2); Sendbyte(0xfa); Sendbyte(dat&0xf0); Sendbyte((dat&0x0f)<<4); //CS=0;DELAY_US(2); ] void LCD_Init(void) [ write_com(0x01); DELAY_US(10000); write_com(0x30); DELAY_US(100); write_com(0x0c); DELAY_US(100); write_com(0x06); DELAY_US(100); write_com(0x02); DELAY_US(10000); ] void main(void) [ int n; InitSysCtrl(); // 系统初始化函数 InitSpiaGpio(); DINT; // 关闭CPU中断 InitPieCtrl(); // PIE中断控制 IER = 0x0000; // 关闭中断使能 IFR = 0x0000; // 清除中断标志位 InitPieVectTable(); EINT; ERTM; SPI_init(); SpiaRegs.SPITXBUF=0x00;//发送的伪数据,如果不发送这个数据,第一个指令就没作用 //MemCopy(&RamfuncsLoadStart,&RamfuncsLoadEnd,&RamfuncsRunStart); while(1) [ /*****************第一行*******************/ LCD_Init(); write_com(0x80); write_data(0x0b); write_data(0x0b); for(n=0;n<12;n++) [ write_data(table0[n]); DELAY_US(10); ] write_data(0x0b); write_data(0x0b); /*****************第二行********************/ DELAY_US(1000000); LCD_Init(); write_com(0x90); write_data(0x0b); write_data(0x0b); for(n=0;n<12;n++) [ write_data(table0[n]); DELAY_US(10); ] write_data(0x0b); write_data(0x0b); DELAY_US(1000000); /*****************第三行********************/ LCD_Init(); write_com(0x88); write_data(0x0b); write_data(0x0b); for(n=0;n<12;n++) [ write_data(table0[n]); DELAY_US(10); ] write_data(0x0b); write_data(0x0b); DELAY_US(1000000); /*****************第四行********************/ LCD_Init(); write_com(0x98); write_data(0x0b); write_data(0x0b); for(n=0;n<12;n++) [ write_data(table0[n]); DELAY_US(10); ] write_data(0x0b); write_data(0x0b); DELAY_US(1000000); ] // while(1); ] void SPI_init() //SPI的初始化函数 [ EALLOW; SpiaRegs.SPICCR.bit.SPISWRESET=0; // Reset SPI SpiaRegs.SPICCR.all=0x0047; //8-bit character, disable Loopback mode,Rising edge output SpiaRegs.SPICTL.all=0x0006; //Interrupt enabled, Master,no delay SpiaRegs.SPISTS.all=0x0000; //clear all the status SpiaRegs.SPIBRR=0x0063; // Baud rate SpiaRegs.SPIPRI.all=0x0000; SpiaRegs.SPICCR.bit.SPISWRESET=1; // Enable SPI EDIS; ] |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
570 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1019 浏览 1 评论
662 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
496 浏览 1 评论
1018 浏览 0 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
122浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
93浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
105浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
103浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
127浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-6 05:41 , Processed in 0.919064 second(s), Total 52, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号