完善资料让更多小伙伴认识你,还能领取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; ] |
|
相关推荐 |
|
只有小组成员才能发言,加入小组>>
2909个成员聚集在这个小组
加入小组361 浏览 1 评论
555 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
802 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
670 浏览 1 评论
对于多级放大威廉希尔官方网站 板,在PCB布局中,电源摆放的位置应该注意什么?
1146 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
99浏览 29评论
434浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
270浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
220浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
79浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-1 21:08 , Processed in 0.895475 second(s), Total 54, Slave 44 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号