fangjikun 发表于 2014-12-10 17:20:10

dspic33fJ128gp706的串口通讯问题


设计中使用串口一(RF3串口发送,RF2串口接收),始终不能通讯,
寄存器状态显示:
U1STA == 0x0114即发送寄存器空、接收空闲、帧错误
IFS0 ==0X0000未产生接收中断(接收空闲当然没有中断产生啦)

IO端口初始化:TRISF=0x0044; 不管RF2\3通讯口设为输入、输出都未产生影响
是什么地方未正确配置?
void InitUart1(void)//串口1初始化
{
      U1MODEbits.STSEL = 0;// 1个停止位
      U1MODEbits.PDSEL = 0;// 8位无校验,N , 8, 1
      U1MODEbits.RTSMD = 0;// 引脚处于单工模式
      U1MODEbits.ABAUD = 0;// 自动波特率禁止
      U1MODEbits.BRGH= 0;// 标准模式
      U1MODEbits.LPBACK= 0;// 禁止环回模式
      U1MODEbits.UEN   = 0;//使能并使用UxTX和UxRX引脚;UxCTS和UxRTS/BCLK引脚由端口锁存器控制
      U1BRG = BRGVAL;//BRG=((FCY/目标波特率)/16)-1=(8000000/9600/16)-1=51
      IPC2bits.U1RXIP=0b110;//6级中断优先
      IEC0bits.U1RXIE=1;//UART1接收器中断允许位
      U1STAbits.URXISEL=0;
      //U1STAbits.URXISEL1 = 0;// 接收一个字符后中断
      //U1STAbits.URXISEL0 = 0;//
      U1STAbits.UTXEN   = 1;// 允许发送
      U1MODEbits.UARTEN = 1;// 使能UART
      EN485 = 0;//#define EN485 LATFbits.LATF5 //485收发控制
}
//void __attribute__((__interrupt__,no_auto_psv)) _U1RXInterrupt()
void __attribute__((interrupt, auto_psv)) _U1RXInterrupt(void)//串口1接收中断
{
         IFS0bits.U1RXIF=0;
         rc_buff = U1RXREG;
         rclenth+=1;
         if(rclenth>7)//数组满
             {rclenth=0;//数组下标清零
            Comm_Receive_OK=1;//接收完成
            }
}

fangjikun 发表于 2014-12-13 11:44:01

看资料dspic33fJ128gp706 的 UART是全双工的,而我的max485芯片是半双工的,是不是要采用全双工的485芯片?
(注:电路是直接从原来18F4520应用中拷贝的,然后重新做的实验板,原来的电路是异步半双工,在18F中用是正常的。)

xiaohunnanzi 发表于 2014-12-13 13:15:28

{:sweat:}让人看你的头像还是问题
页: [1]
查看完整版本: dspic33fJ128gp706的串口通讯问题