搜索
bottom↓
回复: 21
打印 上一主题 下一主题

使用DMA发送数据帧的时候,如何将USART_DR中的第8bit置1

[复制链接]

出0入170汤圆

跳转到指定楼层
1
发表于 2018-3-22 09:13:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在使用DMA发送数据帧的时候USART_DR寄存器的第8bit位想发送的时候一直为高电平,不知如何实现

出0入0汤圆

2
发表于 2018-3-22 09:19:20 | 只看该作者
发送之前把数据都或上0x80?

出0入170汤圆

3
 楼主| 发表于 2018-3-22 09:37:58 | 只看该作者
dboyzju 发表于 2018-3-22 09:19
发送之前把数据都或上0x80?

第8bit,就是第9位了,就是不想或上0X0100,不知道有没有方法能让USART中的DR,bit8为1

出0入54汤圆

4
发表于 2018-3-22 09:47:30 | 只看该作者
UART设置为传输9位,DMA设置为传输16bit。然后传输的数据扩展成16位再或上0x100

出0入170汤圆

5
 楼主| 发表于 2018-3-22 09:58:53 | 只看该作者
lusson 发表于 2018-3-22 09:47
UART设置为传输9位,DMA设置为传输16bit。然后传输的数据扩展成16位再或上0x100 ...

有没有其他的方法,数据是8bit,不想改定义成16bit,数据500多个字节为1帧

出0入0汤圆

6
发表于 2018-3-22 10:53:05 | 只看该作者
穿越时空 发表于 2018-3-22 09:37
第8bit,就是第9位了,就是不想或上0X0100,不知道有没有方法能让USART中的DR,bit8为1 ...

这种寄存器没有这种配置选项,至少目前接触的芯片都没见过

出0入54汤圆

7
发表于 2018-3-22 11:29:11 | 只看该作者
穿越时空 发表于 2018-3-22 09:58
有没有其他的方法,数据是8bit,不想改定义成16bit,数据500多个字节为1帧

你是uart数据为9位,然后想bit8一直为1?

出0入0汤圆

8
发表于 2018-3-22 12:36:54 | 只看该作者
USART_DR  这个寄存器是16位的 虽然只有9位有效  f1系列应该只支持16位访问,虽然你用8位数据写入,效果却等同于整型提升后按16位写入

出0入0汤圆

9
发表于 2018-3-22 13:29:48 | 只看该作者
7位+1位固定校验。

出0入170汤圆

10
 楼主| 发表于 2018-3-22 13:37:07 | 只看该作者
shangdawei 发表于 2018-3-22 13:29
7位+1位固定校验。

可以固定校验位吗?怎么固定

出0入170汤圆

11
 楼主| 发表于 2018-3-22 13:37:59 | 只看该作者
myxiaonia 发表于 2018-3-22 12:36
USART_DR  这个寄存器是16位的 虽然只有9位有效  f1系列应该只支持16位访问,虽然你用8位数据写入,效果却 ...

是啊!,但是要第8位为1,还是想不出

出0入0汤圆

12
发表于 2018-3-22 14:04:16 | 只看该作者
设成8位数据格式,2位停止位。

出0入170汤圆

13
 楼主| 发表于 2018-3-22 15:24:47 | 只看该作者
sme 发表于 2018-3-22 14:04
设成8位数据格式,2位停止位。

我现在就是2个停止位,我还想让DR寄存器的bit8为高电平

出0入0汤圆

14
发表于 2018-3-23 11:45:48 来自手机 | 只看该作者
穿越时空 发表于 2018-3-22 15:24
我现在就是2个停止位,我还想让DR寄存器的bit8为高电平

这是一回事。8N2=9N1,第9位永远为1

出0入0汤圆

15
发表于 2018-3-23 12:48:09 | 只看该作者
我想楼主要做的是串口数据格式1个起始位,8个数据位,1个校验位,2个停止位。
而且校验位是固定的MARK或SPACE校验,选9个数据位,无校验,2个停止位,如果你用中断或查询的方式可以往DR送值得时候加0x80,DR是16位的。
如果你用DMA的话,传送就直接传16位的,
如果你不想用16位的,只想用8位的缓存,你可以先将DR bit8,置1,然后再启动DMA,不知道DMA传送8位会不会覆盖掉第9位的值,可以测试下。

出0入170汤圆

16
 楼主| 发表于 2018-3-24 14:46:57 | 只看该作者
本帖最后由 穿越时空 于 2018-3-24 14:49 编辑
lingdianhao 发表于 2018-3-23 12:48
我想楼主要做的是串口数据格式1个起始位,8个数据位,1个校验位,2个停止位。
而且校验位是固定的MARK或SPA ...

每次DR发送的时候要置位一下,如果不行用16位吧!烦啊!

出0入170汤圆

17
 楼主| 发表于 2018-3-24 14:56:44 | 只看该作者
xwkm 发表于 2018-3-23 11:45
这是一回事。8N2=9N1,第9位永远为1

我用9位数据,2个停止位

出0入0汤圆

18
发表于 2018-3-25 07:57:51 来自手机 | 只看该作者
16bit不需要纠结,会多用RAM也不是什么大不了的事

出0入0汤圆

19
发表于 2018-3-25 08:00:54 来自手机 | 只看该作者
实在不够用,要不就换方案,中断发送。DMA是挺好,但是系统方案不是谁好就非得用谁,要全盘考虑

出0入170汤圆

20
 楼主| 发表于 2018-3-28 09:40:51 | 只看该作者
xuxueliang 发表于 2018-3-25 08:00
实在不够用,要不就换方案,中断发送。DMA是挺好,但是系统方案不是谁好就非得用谁,要全盘考虑 ...

已采用16位的数据格式,每次发送的时候把BIT8或上1,还是使用DMA发送,不想频繁的进中断

出50入135汤圆

21
发表于 2024-3-18 16:13:58 | 只看该作者
为啥有这么奇怪的须求哈,应用在哪里?

出0入0汤圆

22
发表于 2024-3-21 08:25:53 来自手机 | 只看该作者
打开MARK校验
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 09:33

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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