穿越时空 发表于 2018-3-22 09:13:24

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

在使用DMA发送数据帧的时候USART_DR寄存器的第8bit位想发送的时候一直为高电平,不知如何实现

dboyzju 发表于 2018-3-22 09:19:20

发送之前把数据都或上0x80?

穿越时空 发表于 2018-3-22 09:37:58

dboyzju 发表于 2018-3-22 09:19
发送之前把数据都或上0x80?

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

lusson 发表于 2018-3-22 09:47:30

UART设置为传输9位,DMA设置为传输16bit。然后传输的数据扩展成16位再或上0x100

穿越时空 发表于 2018-3-22 09:58:53

lusson 发表于 2018-3-22 09:47
UART设置为传输9位,DMA设置为传输16bit。然后传输的数据扩展成16位再或上0x100 ...

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

dboyzju 发表于 2018-3-22 10:53:05

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

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

lusson 发表于 2018-3-22 11:29:11

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

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

myxiaonia 发表于 2018-3-22 12:36:54

USART_DR这个寄存器是16位的 虽然只有9位有效f1系列应该只支持16位访问,虽然你用8位数据写入,效果却等同于整型提升后按16位写入

shangdawei 发表于 2018-3-22 13:29:48

7位+1位固定校验。

穿越时空 发表于 2018-3-22 13:37:07

shangdawei 发表于 2018-3-22 13:29
7位+1位固定校验。

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

穿越时空 发表于 2018-3-22 13:37:59

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

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

sme 发表于 2018-3-22 14:04:16

设成8位数据格式,2位停止位。

穿越时空 发表于 2018-3-22 15:24:47

sme 发表于 2018-3-22 14:04
设成8位数据格式,2位停止位。

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

xwkm 发表于 2018-3-23 11:45:48

穿越时空 发表于 2018-3-22 15:24
我现在就是2个停止位,我还想让DR寄存器的bit8为高电平

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

lingdianhao 发表于 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位的值,可以测试下。

穿越时空 发表于 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位吧!烦啊!

穿越时空 发表于 2018-3-24 14:56:44

xwkm 发表于 2018-3-23 11:45
这是一回事。8N2=9N1,第9位永远为1

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

xuxueliang 发表于 2018-3-25 07:57:51

16bit不需要纠结,会多用RAM也不是什么大不了的事

xuxueliang 发表于 2018-3-25 08:00:54

实在不够用,要不就换方案,中断发送。DMA是挺好,但是系统方案不是谁好就非得用谁,要全盘考虑

穿越时空 发表于 2018-3-28 09:40:51

xuxueliang 发表于 2018-3-25 08:00
实在不够用,要不就换方案,中断发送。DMA是挺好,但是系统方案不是谁好就非得用谁,要全盘考虑 ...

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

Stm32Motor 发表于 2024-3-18 16:13:58

为啥有这么奇怪的须求哈,应用在哪里?

wx-ta 发表于 2024-3-21 08:25:53

打开MARK校验
页: [1]
查看完整版本: 使用DMA发送数据帧的时候,如何将USART_DR中的第8bit置1