TI中文支持网
TI专业的中文技术问题搜集分享网站

6678串口

BIOS三个任务,串口外部还回模式,硬件上通过FPGA还回

任务一:产生命令字符串,发送第一个字符;

                等待收到信号量1,打印收缓冲区的字符

任务二:收到信号量2,发送一个字符;

               断点()

                发送完成,关闭发送中断;

任务三:收到信号量3,接收一个字符;

               收到字符判断命令,接收完成释放信号量1

串口ISR:通过IIR_INTID判断收发状态,

                  INTID=1释放信号量2

                  INTID=2释放信号量3

如此循环测试,断点在发送一个字符处,能够正常还回,发什么能正常收到什么;不加断点,测试发现发送完一条命令后,接收完全不对,字符数目也不够

怀疑收发中断并发有问题,因此在断点处添加时延,Task_sleep(1);然后就正常了

请教各位专家,此处怎么处理,难道发的过程就不能收吗?为什么TI的中断信号不能够分开用bit表示,有中断就都可以处理,只有一个INTID

user3757070:

TI的专家们都去哪了?

Allen35065:

任务二关中断的时候是不是把接收中断也关了,导致接收收不到,加上延时,接收才能完成;

发送接收可以并行,主要还是要把流程理清楚,中断信号在IFR里是bit位表示的,事件号在EVENT表里也是bit位表示的,建议查看C66x CPU and instruction文档

user3757070:

回复 Allen35065:

感谢Allen Yin回答!

首先UART外部是环回的,可以认为就是TRX硬件连线;软件使用中断进行收发,中断接收,中断发送(帧开始打开发送完成中断,帧发送完成关闭发送完成中断);

软件做法:

     发送一个帧(10个字节),使用中断进行发送(没有使能fifo,帧开始发送打开中断,发完一个字节产生发送完成中断,然后再发送下一个直到10个字节发送完成关闭发送完成中断);

    接收中断常开,按理说在发送完一个字节后的短时间内就会收到发送的字节(产生接收中断),但是我发现现在是发完一个字节要加延时,等到接收这个字节完成,再发送下一个字节,才能正常实现发一帧的同时收一帧,否则发完成中断能正常产生,接收中断不正常,接收的数据也是错误的

Allen35065:

回复 user3757070:

在你的代码里收发中断会很频繁,可能会出现进接收中断和发送中断的时候互相屏蔽或者互相干扰。

建议不要这么实现,使用FIFO模式或者通过EDMA来进行发送接收,减少中断的次数。

user3757070:

回复 Allen35065:

感谢Allen Yin,看起来UART只能开FIFO,用DMA了,另外我还有个问题在另一个帖子里,希望得到您的帮助

http://www.deyisupport.com/question_answer/dsp_arm/c6000_multicore/f/53/t/107883.aspx

赞(0)
未经允许不得转载:TI中文支持网 » 6678串口
分享到: 更多 (0)