我使用的是创龙的TL6748F-EasyEVM-A2开发板,在仿真中断接收过程中,暂停后点击restart后程序无法再次接收到数据,也无法进入中断。但是串口接收寄存器的数值还是一直在变动,请问这是什么原因造成的呢?只有重新断电重启开发板后才可以重新进入中断,重新接收数据。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我使用的是创龙的TL6748F-EasyEVM-A2开发板,在仿真中断接收过程中,暂停后点击restart后程序无法再次接收到数据,也无法进入中断。但是串口接收寄存器的数值还是一直在变动,请问这是什么原因造成的呢?只有重新断电重启开发板后才可以重新进入中断,重新接收数据。
打断点后点击run还可以继续跑,我重复这样操作多次还是能进入中断,但是当我结束仿真后,未重启开发板,后面再进入仿真就无法进入中断和接收数据了。但是接收寄存器自然会不断更新自身的值
我的理解是你目前代码其实运行起来是没有问题的,你现在是想要实现不重启开发板的情况下,再次仿真?
建议可以复位一下DSP,然后scrips下重新进行初始化配置,再load程序就可以了。
是的,您理解得没错。但是只要开发板不断电,我点击reset CPU会跳转到0x700000。重新初始化配置,在我点击restart后再点击run会执行到重新初始化配置。
现在的问题是只要开发板上电后我只有第一次仿真才能接收到完整的数据,后面只要不断电重启,我就无法获取串口接收到的数据,也进不了接收中断。
我用StarterWare中的uart例程试了一下,restart之后串口是可以接收到数据的,不同的是我是通过串口助手发送的,参考看一下。
https://processors.wiki.ti.com/index.php/StarterWare
通常也就以下四种情况能够触发进入中断。你的中断配置中是否有相应的判断。
RLSINT
老师,您好!您那边的StarterWare用的是什么版本的?您还有什么其他的联系方式吗?例如微信,QQ等即时通信工具。我QQ:294132382;微信号:hxjaizjj;您若方便我们可以即时工具通信,我也好录视频等发给您。
如何用StarterWare中的uart例程创建工程呀?它里面只有一个C文件,需要配置相关的文件很多,我在创建工程报错很多。不知老师能否可以将你验证成功的工程发送给我?
风雨潇潇姿容姣姣 说:当我在串口助手上选择按照一定时间间隔发送,后面只要不关闭开发板的电源,依旧还能不断接收到数据
这个是测得什么程序。是指RBR仍然能接收数据?
经测试是发现会进入溢出错误,那之后有执行类似StarterWare例程中从RBR中继续读取数据的操作吗?直接清OE是无法跳出该错误的。
/* Check if the cause is receiver line error condition.*/
if(UART_INTID_RX_LINE_STAT == int_id)
{
while(UARTRxErrorGet(SOC_UART_2_REGS))
{
/* Read a byte from the RBR if RBR has data.*/
UARTCharGetNonBlocking(SOC_UART_2_REGS);
}
}
我觉得你在restart自己的程序之前,应该先暂停5ms数据的发送,然后再测,或者尝试间隔时间长一些发送少量数据看是否仍然有类似的问题。我认为可能就是仿真执行顺序导致的问题,因为本身你的程序是没有问题的。
No source available for "0x713188"这是在无法接收的情况下报出来的提示。
暂停不了5MS的数据发送和接收,因为是固件连接。
我认为只要解决了No source available for "0x713188",就可以正常接收了。
老师,您好!我又看了一遍LSR这个寄存器的OE位的说明,文档的意思是在非FIFO模式:1:检测到过载错误。在接收移位寄存器(RBR)的字符可读前,它被RBR内新到达的值覆盖。但是这里没说怎么解决这个OE位过载错误。
老师,再问一下如何uartEcho.c这个文件里的中断发送,只能发送一次,也即是串口初始化完后,发送FIFO为空,这时候程序跳到中断服务函数里。后面我想再发送时应该怎么操作呢?
老师,您好!我这边的情况现在总结出来:点击restart之后LSR=0X63,IIR=0X06;关闭仿真后重新DEBUG,LSR=0XE3,IIR=0X06;请问怎样操作才能清除LSR的OE位呢?
试一下以下帖子中的方法。
before enabling the UART interrupts, just read the Line Status Register (LSR) to clear any previous interrupts.
e2e.ti.com/.../250603
老师,再问一下如何uartEcho.c这个文件里的中断发送,只能发送一次,也即是串口初始化完后,发送FIFO为空,这时候程序跳到中断服务函数里。后面我想再发送时应该怎么操作呢?