TI中文支持网
TI专业的中文技术问题搜集分享网站

430F5418通过uart方式与lcd通讯,无法接收lcd返回的数据。

上面是lcd的通讯方式;

void put_char( uchar ch)
{
        while(!(UCA1IFG & UCTXIFG));            // –BIT5
        UCA1TXBUF = ch;
}
 
char get_char(void)
{
uchar ch;
        ch   =  temp;
return ch;
}
//下面是背光指令;
void Back_Toggle(void)
{
uchar ch;
        put_char(BACK_TOGGLE);
ch=get_char();
while(ch!=0xCC); //等待返回值???
}
//下面是中断程序
 #pragma vector=USCI_A1_VECTOR  
__interrupt void USCI_A1_ISR(void)  
{  
  switch(__even_in_range(UCA1IV,4))  
  {  
  case 0:break;  
  case 2:                                   // 接收中断  
    while (!(UCA1IFG&UCTXIFG));             // 等待发送完成  
    temp = UCA1RXBUF;                  // 接收缓冲区  
    break;  
  case 4:break;                             // 发送中断  
  default: break;  
  }  
}  
Lina Lian:

hui tang,

请问目前MSP430 通过UART给LCD发送数据, LCD可否正常接收成功数据?即你设定背光后,LCD是否受控制?

hui tang
char get_char(void)
{
uchar ch;
        ch   =  temp;
return ch;
}

另外你这样检测是否接收到数据,有可能temp还保持上一次的值,并没有真正的进入接收中断,接收到新的数据。

有以下建议:

参考例程,先把程序调通,UART自己收自己发,并用示波器观察,成功后,然后链接LCD后,仍旧用示波器观察看看正常否?

MSP430x54x_uscia0_uart_01.c USCI_A0, 115200 UART Echo ISR, DCO SMCLKMSP430x54x_uscia0_uart_02.c USCI_A0, Ultra-Low Pwr UART 2400 Echo ISR, 32kHz ACLKMSP430x54x_uscia0_uart_03.c USCI_A0, Ultra-Low Pwr UART 9600 Echo ISR, 32kHz ACLKMSP430x54x_uscia0_uart_04.c USCI_A0, 9600 UART, SMCLK, LPM0, Echo with over-sampling

BR,

Lina

Carter Liu:

可以先用示波器检查一下是否有LCD数据返回到430单片机

Carter Liu:

程序中没有看到发送完成后改变串口速率的部分,不知道实际中是否发完立即改变为接收速率

hui tang:

回复 Lina Lian:

这两天春节放假,节后回到单位用示波器试试。

hui tang:

回复 Carter Liu:

1.接收波特率和发送波特率分开设置的?

2.都用的是9600,是否也需要分开设置?

hui tang:

回复 Lina Lian:

能否把

ch = temp;

改成

ch = UCA1RXBUF;

——————–

单位的示波器被拿去检定了。先摸索摸索别的方法看看能不能解决。

Bruce Wei:

回复 hui tang:

接收是在中断中完成的,temp只是起到参数传递的作用。

Bruce Wei:

回复 hui tang:

只有一个波特率,收发都是一样的。

赞(0)
未经允许不得转载:TI中文支持网 » 430F5418通过uart方式与lcd通讯,无法接收lcd返回的数据。
分享到: 更多 (0)