找回密码
 立即注册
楼主: marshallemon

在串口设置帧格式为9bit时,怎么使用DMA功能?

[复制链接]
已绑定手机

123

主题

5133

回帖

1万

积分

超级版主

无情的代码机器

积分
11463
发表于 3 天前 | 显示全部楼层
marsha*** 发表于 2026-11-4 16:46
这种并不算非标吧,对于上位机软件来说第九位就时开放给客户的,和常规51一样的,无非没有DMA ...

我意思对于串口的当前DMA设计来说,没这功能。
但是是什么场景需要?
如果市场有需求,设计能改,后续新型号也许就可实现。
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

已绑定手机

11

主题

484

回帖

1362

积分

金牌会员

积分
1362
发表于 前天 07:39 | 显示全部楼层
marsha*** 发表于 2026-11-4 11:33
我是需要自己设置第九位,不能是奇偶校验。

坐等结论。
回复

使用道具 举报 送花

6

主题

49

回帖

213

积分

中级会员

积分
213
 楼主| 发表于 前天 10:53 | 显示全部楼层
erci*** 发表于 2026-11-4 16:51
我意思对于串口的当前DMA设计来说,没这功能。
但是是什么场景需要?
如果市场有需求,设计能改,后续新 ...

其实现在MCU的串口已经可以做到很高的速度了,有的都可以做到45M的波特率,但存在一个问题,那就是比特流的有效位比例,按照标准的N,8,1格式有效位只有80%,所以想将第九位也用起来,这样有效位会提高一些达到82%,在结合高速波特率,自然需要DMA的加持。如果我使用DMA发送和接收,再不使用第九位的情况下就需要多发一字节,既然串口自身都支持第九位自定义,那为啥DMA不支持?

点评

比如说AMT这个寄存器,设置的字节数,当想自定义9b发送时,当前没法区分是字节数还是位数 再比如说TXAx这个寄存器,设置的存放待发送字节数组地址,当前按8b发送,内部电路也没设计按9b自动拆分组包的逻辑 所以说当  详情 回复 发表于 前天 11:33
回复

使用道具 举报 送花

已绑定手机

123

主题

5133

回帖

1万

积分

超级版主

无情的代码机器

积分
11463
发表于 前天 11:33 | 显示全部楼层
marsha*** 发表于 2026-11-5 10:53
其实现在MCU的串口已经可以做到很高的速度了,有的都可以做到45M的波特率,但存在一个问题,那就是比特流 ...

比如说AMT这个寄存器,设置的字节数,当想自定义9b发送时,当前没法区分是字节数还是位数

再比如说TXAx这个寄存器,设置的存放待发送字节数组地址,当前按8b发送,内部电路也没设计按9b自动拆分组包的逻辑
所以说当前DMA不支持这种发送模式。
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

已绑定手机

2

主题

153

回帖

466

积分

中级会员

积分
466
发表于 前天 13:21 | 显示全部楼层
如果想提高bit效率,用spi比较合适,速度比uart还高。
回复

使用道具 举报 送花

6

主题

49

回帖

213

积分

中级会员

积分
213
 楼主| 发表于 前天 13:24 | 显示全部楼层
jrc*** 发表于 2026-11-5 13:21
如果想提高bit效率,用spi比较合适,速度比uart还高。

SPI肯定不行,SPI只适合板内通讯,现在RS485的接口芯片能做到50M的太多了,很多应用虽然不是板内,但一主多从,节点间只需要1~2米的距离即可,所以高速串口还是最优解
回复

使用道具 举报 送花

6

主题

49

回帖

213

积分

中级会员

积分
213
 楼主| 发表于 前天 13:28 | 显示全部楼层
erci*** 发表于 2026-11-5 11:33
比如说AMT这个寄存器,设置的字节数,当想自定义9b发送时,当前没法区分是字节数还是位数

再比如说TXAx ...

是啊,但如果用于多机通讯,SM2使能,不管是发送地址帧还是数据帧应该都是存在第九位的,此时如果使用DMA发送一样存在我说的问题,既然串口数据中的帧格式中包含第九位,为啥不考虑把DMA也兼容这种格式?

点评

上面提的如何设置数量,如何存储待发送数据,完全两套逻辑,如何兼容? 虽然说是“为了提高比特流的有效位比例” 但是考虑要软件硬件牺牲大量时间去为9b组包拆包,到头来可能还不如8b模式多发两字节? 多机通讯,第  详情 回复 发表于 前天 15:10
回复

使用道具 举报 送花

已绑定手机

123

主题

5133

回帖

1万

积分

超级版主

无情的代码机器

积分
11463
发表于 前天 15:10 | 显示全部楼层
marsha*** 发表于 2026-11-5 13:28
是啊,但如果用于多机通讯,SM2使能,不管是发送地址帧还是数据帧应该都是存在第九位的,此时如果使用DMA ...

上面提的如何设置数量,如何存储待发送数据,完全两套逻辑,如何兼容?

虽然说是“为了提高比特流的有效位比例”
但是考虑要软件硬件牺牲大量时间去为9b组包拆包,到头来可能还不如8b模式多发两字节?
多机通讯,第一包手动发地址帧,后续数据帧dma发也可正常用。
总之当前DMA设计主要服务于传统8b通讯~
三天不学习,赶不上刘少奇~
回复

使用道具 举报 送花

6

主题

49

回帖

213

积分

中级会员

积分
213
 楼主| 发表于 前天 15:22 | 显示全部楼层
erci*** 发表于 2026-11-5 15:10
上面提的如何设置数量,如何存储待发送数据,完全两套逻辑,如何兼容?

虽然说是“为了提高比特流的有效 ...

既然都使用DMA了,如果是能够兼容9b,连地址帧和数据帧可以一起发送,这才是DMA的意义所在,只所以上DMA,对于DMA就是无需等待,可以防止多次进中断,一起发送优势更大
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-11-7 10:17 , Processed in 0.085120 second(s), 81 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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