打印
[PIC®/AVR®/dsPIC®产品]

两块PIC单片机通过UART互相通信问题

[复制链接]
1479|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhuludiqing|  楼主 | 2016-8-13 10:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zhuludiqing 于 2016-8-13 10:55 编辑

两块单片机串口通信,单片机型号为PIC32MX775,两块单片机在一块板子上,单片机1的UART5和单片机2的UART6交叉互联,UART5初始化为
void intUart5()            
    {
    UARTConfigure(UART5, UART_ENABLE_PINS_TX_RX_ONLY );
    UARTSetFifoMode(UART5, UART_INTERRUPT_ON_TX_NOT_FULL | UART_INTERRUPT_ON_RX_NOT_EMPTY);
    UARTSetLineControl(UART5, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE| UART_STOP_BITS_1);
    UARTSetDataRate(UART5,GetPeripheralClock(), 57600);
    UARTEnable(UART5, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | UART_TX));
    INTEnable(INT_SOURCE_UART_RX(UART5), INT_ENABLED);
    INTSetVectorPriority(INT_VECTOR_UART(UART5), INT_PRIORITY_LEVEL_2);
    INTSetVectorSubPriority(INT_VECTOR_UART(UART5), INT_SUB_PRIORITY_LEVEL_0);
   }

UART6初始化如下:
void intUart6()   
    {
    UARTConfigure(UART6, UART_ENABLE_PINS_TX_RX_ONLY);
    UARTSetFifoMode(UART6, UART_INTERRUPT_ON_TX_NOT_FULL | UART_INTERRUPT_ON_RX_NOT_EMPTY);
    UARTSetLineControl(UART6, UART_DATA_SIZE_8_BITS | UART_PARITY_NONE| UART_STOP_BITS_1);
    UARTSetDataRate(UART6, GetPeripheralClock(), 57600);
    UARTEnable(UART6, UART_ENABLE_FLAGS(UART_PERIPHERAL | UART_RX | UART_TX));
    INTEnable(INT_SOURCE_UART_RX(UART6), INT_ENABLED);
    INTSetVectorPriority(INT_VECTOR_UART(UART6), INT_PRIORITY_LEVEL_1);
    INTSetVectorSubPriority(INT_VECTOR_UART(UART6), INT_SUB_PRIORITY_LEVEL_0);
    }

UART6发送,UART5通过中断接收。但是UART5不能进入中断,接收不到数据;反过来,UART5发送,UART6接收也是同样的问题。通过串口助手接收,可以证明发送是都没有问题的。为什么会出现这样的问题,是我程序设置有问题吗,请各位赐教。
沙发
JY-DX-JY| | 2016-8-14 13:46 | 只看该作者
看样子就是程序的问题。

使用特权

评论回复
板凳
dogglove| | 2016-8-14 22:33 | 只看该作者
估计是程序问题,

使用特权

评论回复
地板
兰天白云| | 2016-8-16 14:37 | 只看该作者
不中断,用查询标志位的方法看看

一个工程师,最大的能力是遇到问题解决思路的能力有多大

使用特权

评论回复
5
XIEYUANBIN| | 2016-8-16 16:15 | 只看该作者
全局中断没打开

使用特权

评论回复
6
zhuludiqing|  楼主 | 2016-8-16 17:19 | 只看该作者
问题解决了,因为使用的器件是PIC32MX775F256H,器件的UART5的RX脚和AN8脚复用,AD1PCFG 寄存器具有默认值是0x00000000,因此,复用ANx 功能的所有引脚都默认为模拟引脚。所以将AD1PCFG相应位置1就可以解决了。之前说反过来用UART6收也收不到,这是我测试的时候不小心弄错了。谢谢大家!

使用特权

评论回复
7
zhuludiqing|  楼主 | 2016-8-16 17:22 | 只看该作者
没有认真研读芯片资料惹的祸,罪过。谢谢大家~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

33

帖子

2

粉丝