USATR串口协议

一般都为TTL标准

9位数据帧是因为在前八位有效载荷后面加上了一个奇偶校验位

无校验就是不需要校验

奇校验,如果使用奇校验包括校验位在内的九位数据会出现奇数个1,如果数据位里的1是偶数位,那么校验位就补一个1达到奇数位,如果数据位为奇数位,那么校验位补0。

接收方,在接受数据后,会验证数据位和校验位如果1的个数还是奇数就认为数据没有出错,如果传输过程中因为干扰有一个由1变为0,或者0变为1,那么整个数据的奇偶特性就会变化。

偶校验同理。

串口参数

波特率,每秒传输码元的个数,有时也叫比特率,每秒传输的比特数单位为bit/s或bps,决定了每隔多久发送一位(bit)-------------------   1byte=8bit详见秒表大佬的博客bit、byte、KB、B、字节、位、字符之间关系详解_kb b bit-CSDN博客

起始位固定为低电平是为了由高电平变低电平产生的下降沿,宣告传输开始,停止位固定为高电平是为了方便下一次数据传输产生下降沿。 

USART(通用同步/异步收发器)主要异步通信。USART的外设是串口通信的硬件支持电路,大体可以分为发送和接收两部分。

停止位的长度决定了帧的间隔,最常用的是一位停止位

DMA(Direct Memory Access),即“直接  存储器存取/访问”,可以提供外设和存储器之间,或存储器和存储器之间直接的高速数据传输。这里的外设指外设寄存器指外设的数据寄存器Data Register——DR,例如ADC的数据寄存器,串口的数据寄存器等;存储器指运行内存SRAM和程序存储器Flash,是存储变量、数组和程序代码的地方。需要注意的是,原理上DMA执行存储器到存储器的数据转运,只不过STM32特殊制定了可以将外设的存储器看作普通的存储器进行数据转运。这个传输过程无需CPU干预,节省了CPU资源。

波特率发生器用来产生约定的通信速率,时钟来源是PCLK2或1分频后产生的时钟通向发送控制器和接收控制器,用来控制发送移位和接收移位,之后由发送数据寄存器和发送移位寄存器配合,通过GPIO口的复用输出,输出到TX引脚,产生串口协议规定的波形。接收同理,RX接收到的波形在GPIO引脚从左低位先行引入,移完一帧数据数据统一转运到接收寄存器,在转移的同时置一个RXNE的标志位,检查此标志位可以知道是否收到数据,同时此标志为也可以申请中断,收到数据时直接进入中断函数,快速的读取和保存数据,这四个寄存机在软件操作时统称为DR寄存器,开关控制为配置完成后用CMD开启外设

注:移位寄存器是右移,低位先行,接收寄存器右移,高位先行。高位先行即在传输一个字节的时候先传输高位;低位先行即在传输一个字节的时候先传输低位。高位先行和低位先行是针对串行数据传输方式来说的。

高低位先行可以看看MrBlackWhite博主的文章,写的非常好。大小端与高位先行、低位先行_小端存储和低位优先的区别-CSDN博客

空闲数据帧都置1

断开帧都置0

  • 47
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

m0_56858860

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值