使用DMA发送数据帧的时候,如何将USART_DR中的第8bit置1
在使用DMA发送数据帧的时候USART_DR寄存器的第8bit位想发送的时候一直为高电平,不知如何实现 发送之前把数据都或上0x80? dboyzju 发表于 2018-3-22 09:19发送之前把数据都或上0x80?
第8bit,就是第9位了,就是不想或上0X0100,不知道有没有方法能让USART中的DR,bit8为1 UART设置为传输9位,DMA设置为传输16bit。然后传输的数据扩展成16位再或上0x100 lusson 发表于 2018-3-22 09:47
UART设置为传输9位,DMA设置为传输16bit。然后传输的数据扩展成16位再或上0x100 ...
有没有其他的方法,数据是8bit,不想改定义成16bit,数据500多个字节为1帧 穿越时空 发表于 2018-3-22 09:37
第8bit,就是第9位了,就是不想或上0X0100,不知道有没有方法能让USART中的DR,bit8为1 ...
这种寄存器没有这种配置选项,至少目前接触的芯片都没见过 穿越时空 发表于 2018-3-22 09:58
有没有其他的方法,数据是8bit,不想改定义成16bit,数据500多个字节为1帧
你是uart数据为9位,然后想bit8一直为1? USART_DR这个寄存器是16位的 虽然只有9位有效f1系列应该只支持16位访问,虽然你用8位数据写入,效果却等同于整型提升后按16位写入 7位+1位固定校验。 shangdawei 发表于 2018-3-22 13:29
7位+1位固定校验。
可以固定校验位吗?怎么固定 myxiaonia 发表于 2018-3-22 12:36
USART_DR这个寄存器是16位的 虽然只有9位有效f1系列应该只支持16位访问,虽然你用8位数据写入,效果却 ...
是啊!,但是要第8位为1,还是想不出 设成8位数据格式,2位停止位。 sme 发表于 2018-3-22 14:04
设成8位数据格式,2位停止位。
我现在就是2个停止位,我还想让DR寄存器的bit8为高电平 穿越时空 发表于 2018-3-22 15:24
我现在就是2个停止位,我还想让DR寄存器的bit8为高电平
这是一回事。8N2=9N1,第9位永远为1 我想楼主要做的是串口数据格式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:49 编辑
lingdianhao 发表于 2018-3-23 12:48
我想楼主要做的是串口数据格式1个起始位,8个数据位,1个校验位,2个停止位。
而且校验位是固定的MARK或SPA ...
每次DR发送的时候要置位一下,如果不行用16位吧!烦啊!
xwkm 发表于 2018-3-23 11:45
这是一回事。8N2=9N1,第9位永远为1
我用9位数据,2个停止位 16bit不需要纠结,会多用RAM也不是什么大不了的事 实在不够用,要不就换方案,中断发送。DMA是挺好,但是系统方案不是谁好就非得用谁,要全盘考虑 xuxueliang 发表于 2018-3-25 08:00
实在不够用,要不就换方案,中断发送。DMA是挺好,但是系统方案不是谁好就非得用谁,要全盘考虑 ...
已采用16位的数据格式,每次发送的时候把BIT8或上1,还是使用DMA发送,不想频繁的进中断 为啥有这么奇怪的须求哈,应用在哪里? 打开MARK校验
页:
[1]