c6657串口edma问题 - TMS320C665x - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3741|回复: 3
打印 上一主题 下一主题

[未解决] c6657串口edma问题

[复制链接]

0

主题

3

帖子

39

积分

新手上路

Rank: 1

积分
39
跳转到指定楼层
楼主
发表于 2022-4-2 14:57:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 badkid 于 2022-4-2 15:02 编辑

请问一个问题:我使用的是C6657,使用串口0作为和上位机的通信口,串口设置为EDMA模式。
1、在常规的使用中,DSP和上位机之间有一个串口通信协议,协议中规定每次上位机下发数据时每一包的长度,DSP根据该长度初始化EDMA接收,这样通信是没有问题的。
2、但是上位机有时会因为种种原因,下发的数据包没有按照之前我们协议中规定的长度,存在下发的真实长度比协议长度要长的问题,这样DSP在接收到本次edma中断之后,接下来EDMA的中断就完全接收不到了。
3、但是在查看uart寄存器时,发现UART的LSR寄存器表明串口确实接到了上位机下发的数据,从RBR寄存器也可以读出数据。
上面就是我遇到的问题,请问这种问题该怎么解决,,也可以约束上位机下发时的长度判断,但是如果从DSP的角度解决的话,应该怎么去解决?
我的思路是:uart寄存器可以正常读数据,但是edma无法触发中断,就需要将edma的中断重新配置或者有相关寄存器可以将错误模式清除,但是现在还没找到解决办法。

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

0

主题

3

帖子

39

积分

新手上路

Rank: 1

积分
39
沙发
 楼主| 发表于 2022-4-7 17:03:51 | 只看该作者
我还是自己回答一下问题吧
在每次收到edma中断之后,将串口缓冲区的数据全部读出,并清除edma的次要事件对应的位,则问题解决,可以继续接收之后的中断。
回复 支持 反对

使用道具 举报

0

主题

3

帖子

39

积分

新手上路

Rank: 1

积分
39
板凳
 楼主| 发表于 2022-4-7 17:09:00 | 只看该作者
我还是自己回答一下问题吧
在每次收到edma中断之后,加一个对串口数据寄存器的判断,若有数据则读出来,同时清除edma次要事件寄存器的相应位。
回复 支持 反对

使用道具 举报

3

主题

7

帖子

47

积分

新手上路

Rank: 1

积分
47
地板
发表于 2022-4-18 16:20:05 | 只看该作者
楼主方便加个联系方式一起学习吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2024-11-1 09:06 , Processed in 0.037155 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表