dspic33fJ128gp706的串口通讯问题

2020-02-06 10:21发布


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

IO端口初始化:TRISF=0x0044; 不管RF23通讯口设为输入、输出都未产生影响
是什么地方未正确配置?
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[rclenth] = U1RXREG;
         rclenth+=1;
         if(rclenth>7)//数组满
             {rclenth=0;//数组下标清零
              Comm_Receive_OK=1;//接收完成
              }
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
fangjikun
1楼-- · 2020-02-06 10:47
看资料dspic33fJ128gp706 的 UART是全双工的,而我的max485芯片是半双工的,是不是要采用全双工的485芯片?
(注:电路是直接从原来18F4520应用中拷贝的,然后重新做的实验板,原来的电路是异步半双工,在18F中用是正常的。)
xiaohunnanzi
2楼-- · 2020-02-06 13:58
让人看你的头像还是问题

一周热门 更多>