PIC24H UART仅发送4位正确 - 需要分开

  • 本文关键字:UART 4位 PIC24H uart pic24
  • 更新时间 :
  • 英文 :


我正在与Explorer16/32 evb一起工作,并尝试将数据发送到UART。我尝试了UART1,UART2,没有中断,并且一直都有相同的问题。
似乎为了发送1个字节,我需要将其拆分为两个4位,带有Shift

代码:

#define FCY 16000000 
#define BAUDRATE 9600
#define BRGVAL ((FCY/BAUDRATE)/16)-1
U2MODE = 0;
U2STA = 0;
U2MODEbits.STSEL = 0;   // 1-Stop bit
U2MODEbits.PDSEL = 0    ;   // No Parity 8 bit data
U2MODEbits.ABAUD = 0;   // Auto-Baud Disabled
U2MODEbits.BRGH  = 1;   // High Speed Mode
U2MODEbits.URXINV = 0;    
U2STAbits.UTXINV = 0;    
U2BRG = BRGVAL;         // Baud Rate Setting for 9600
U2MODEbits.UARTEN = 1;   //Enable UART module
U2STAbits.UTXEN = 1;    //Enable UART TX 

unsigned char putU2(unsigned char c) 
{       
   while (U2STAbits.TRMT == 0)
   {
   }    
   while ( CTS);                
   while ( U2STAbits.UTXBF);    
   U2TXREG = c & 0xF;
   U2TXREG = (c >> 4) & 0xF;
   return c;
}

如果我将数据分配到4位,我可以在PC上看到正确的数据(C#串行端口应用程序)但不应将其分为两个写入U2TXREG。

我不是100%确定FCY是16000000,但这是唯一给我带来合理结果的价值。

有什么问题?

对于pic24h,在UART高速模式(BRGH = 1)以获取需要除以4而不是16的正确值。有助于100%确定时钟率;如果您不更改配置位,则可能是8 MHz,而不是16。

相关内容

  • 没有找到相关文章

最新更新