|
调试信息:
msp4305438a + iar7.12.1
调试现象:
msp430作为主机,lcd作为从机。使用轮询写入数据方式。希望lcd显示数据每秒钟刷新一次。
使用硬件debug,大概前3秒钟lcd上有数据显示,接着显示数据就丢失了,并且,断电后重新上电(不进入debug)lcd不显示数据,更不会刷新了。
调试代码:
主程序,CPU频率是24MHz
- void main()
- {
- board_init();
-
- spi3_init(); delay_ms(10);
-
- lcd_init(); delay_ms(10);
-
- while (1)
- {
- lcd_disp_cha(0, 0, 'a', LCD_FONT_8X16, LCD_LINE_OFF);
- delay_ms(1000);
- lcd_disp_cha(0, 0, 'b', LCD_FONT_8X16, LCD_LINE_OFF);
- delay_ms(1000);
- }
- }
复制代码
SPI配置(其实MISO引脚根本没有使用,因为不用从lcd读取数据)
- void spi3_init(void)
- {
- P10DIR |= BIT0 + BIT4;
- P10SEL |= BIT1 + BIT2 + BIT3;
-
- P10REN |= BIT0 + BIT1 + BIT2 + BIT3 + BIT4;
-
- UCB3CTL1 |= UCSWRST;
-
- UCB3CTL0 |= UCSYNC + UCMST + UCMSB + UCCKPL;
-
- UCB3CTL1 |= UCSSEL_2;
-
- UCB3BR0 = 0x04;
- UCB3BR1 = 0;
-
- UCB3CTL1 &= ~UCSWRST;
- }
- SPI读写
- uint8_t spi3_rw_byte(uint8_t byte)
- {
- while ((UCB3STAT & UCBUSY)); __no_operation();
-
- UCB3TXBUF = byte;
-
- while ((UCB3STAT & UCBUSY)); __no_operation();
-
- return UCB3RXBUF;
- }
复制代码
调试问题:
1、如果是硬件连接或者寄存器配置问题,那么从一开始就不应该有数据显示。为什么会显示一会之后,数据才丢失呢?
2、断电后重新上电,lcd 连前3秒钟也没有数据显示,完全是一点反应都没有。这个现象该如何解释?
恳请指教,不胜感激! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。
|