dsPIC33EP256MC506 UART中断时TRMT非空问题求助及原因确认
dsPIC33EP256MC506 UART发送中断触发时机不符问题分析
场景与需求
基于dsPIC33EP256MC506的UART通信应用,参数配置为:9600波特率、8位数据位、无校验、2位停止位(9600,8,N,2)。核心需求是在**发送移位寄存器完全清空(TRMT=1,即最后一个停止位移出移位寄存器)**时触发发送中断。
配置代码
按照数据手册描述,将UTXISEL[1:0]配置为01(对应最后一个字符移位完成、传输操作全部结束时触发中断):
USTAbits.UTXISEL0 = 1; USTAbits.UTXISEL1 = 0;
实际现象与手册偏差
手册中UTXISEL[1:0]=01的预期触发条件为TRMT=1,但实际测试时:
- 中断触发时发送FIFO已空,但TRMT=0,说明移位寄存器仍在执行移位操作;
- UTXISEL[1:0]=01与10两种模式无明显功能差异,均未在TRMT=1时触发中断。
问题根源确认
查阅Microchip官方勘误表后,确认此为硅片硬件Bug:当UTXISEL<1:0>=01时,发送中断可能在最后一位移出移位寄存器前提前触发,导致触发时机与手册描述不一致。
内容的提问来源于stack exchange,提问作者Max Kielland
相关产品推荐
相关产品推荐

