0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

SCI串口自动波特率介绍

科技绿洲 来源:中科昊芯 作者:中科昊芯 2022-04-26 09:26 次阅读

中科昊芯推出专题讲解SCI串口通信以来,第一期主要讲解SCI串口FIFO通信原理,本期主要讲解SCI串口自动波特率,FIFO中断通信逻辑将在下期内容中讲解。

HX2000系列SCI模块原理框图如下,自动波特率时,模块将工作于标准SCI模式,其功能可通过SCIFFTX[SCIFFENA]置零选择,其发送、接收与读取过程为:DSP端通过CPU,将数据装载到发送缓冲寄存器SCITXBUF中。使其能发送TXENA信号,通过TXSHF移位寄存器,逐步将SCITXBUF中的数据,移位到SCITXD引脚上。通过GPIOMUX配置发送SCITXD引脚,通过CH340等串行数据传输线向PC发送数据,以实现发送功能。通过GPIOMUX配置SCIRXD引脚,使得DSP端接收,PC端通过CH340等串行数据传输线发送的数据。使能接收RXENA信号,通过RXSHF移位寄存器,逐步将接收数据,移位到接收数据缓冲寄存器SCIRXBUF,以实现接收功能。通过SCIRXST[RXRDY]可判断,当前是否接收到数据,以便于CPU读取接收到的数据。

poYBAGJnSfGAbBDeAAH74xbrbQI568.png

在HX2000系列SCI模块中,通过SPIFFTX[SPIRST]使能,可使SCI自动波特率逻辑工作,其编程过程为:设置初始波特率为1或小于500kbps,以便于自动调整任意波特率。使能SCIFFCT[CDC]选择标准SCI工作于自动波特率模式。使能SCIFFCT[ABDCLR]以清除ABD位,以备自动波特率。PC端发送“A”或“a”,等待主机接收“A”或“a”成功,以完成自动波特率与校准,同时产生SCI传输FIFO中断TXINT;使能SCIFFCT[ABDCLR]以清除ABD位,以响应中断。清除CDC位以锁定当前设置的波特率,以防止重复中断。

由此设计SCI串口AutoBud通信实例:采用SCI与串口CH340,通过串口调试助手,向CPU发送41,PC端接收到41后,任意发送一组数据,CPU接收所发送的数据。

基于以上分析,在CDK上开发SCI AutoBud自动波特率程序,代码包括:SCI GPIO外设引脚配置,标准SCI功能配置程序,SCI自动波特率配置程序,发送与接收程序,主程序调用执行。主要代码如下:

pYYBAGJnSgCAIJ-QAAB6bjuFY50733.png

CDK上开发SCI 串口自动波特率,其编译结果为:

poYBAGJnSguAc99gAAHdS74LHqo382.png

编译通过后,就可以开始调试了,其调试结果如下:

poYBAGJnShSADby6AAHm5DJbxA4825.png

调试后,可通过串口调试助手查看自动波特率状态、发送与接收到的数据如下图:

pYYBAGJnShyALRxwAAIeaUH2FNM106.png

审核编辑:彭菁
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    30

    文章

    5041

    浏览量

    117765
  • 数据
    +关注

    关注

    8

    文章

    6514

    浏览量

    87614
  • 代码
    +关注

    关注

    30

    文章

    4557

    浏览量

    66826
  • SCI
    SCI
    +关注

    关注

    1

    文章

    53

    浏览量

    19951
收藏 人收藏

    评论

    相关推荐

    stm32mp157在linux系统下,串口波特率如何使用非标准波特率

    请问stm32mp157在linux系统下,串口波特率如何使用非标准波特率153600。内核或者设备树里需要怎么改动? 麻烦答复一下,最好能给个详细的更改示例,谢谢!
    发表于 03-14 06:21

    PSOC4如何通过代码修改串口波特率

    由于项目需要,需要实时改变串口波特率,PSOC4如何通过代码修改串口波特率?谢谢
    发表于 02-19 07:40

    什么是串口波特率串口通信为什么要设置波特率

    什么是串口波特率串口通信为什么要设置波特率波特率与比特率的关系 如何选择串口
    的头像 发表于 01-22 16:10 564次阅读

    请问arduino如何自动设置串口波特率?

    arduino 如何自动设置串口波特率? 根据通讯机的波特率自动设置本身的波特率
    发表于 11-10 07:16

    什么是串口波特率串口通信为什么要设置波特率

    在电子设备的世界中,数据是通过各种方式进行传输的。其中,串口通信是一种常见的数据传输方式,它以其简单、可靠和广泛的特性,成为了电子设备间通信的重要手段。而在串口通信中,有一个非常重要的参数——波特率
    的头像 发表于 11-03 08:21 1613次阅读
    什么是<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>?<b class='flag-5'>串口</b>通信为什么要设置<b class='flag-5'>波特率</b>?

    51单片机编程什么时候要用到波特率倍速?波特率倍速有什么用处?

    51单片机串口波特率倍速问题,51单片机编程什么时候要用到波特率倍速,波特率倍速有什么用处啊,不太明白,会不会因为串口
    发表于 10-27 07:34

    Linux中如何在stty修改串口波特率

    Linux内核启动后,串口波特率通常是115200或者9600,此时如果想要修改串口波特率,在shell中通过stty指令就能完成,而不需要修改驱动代码。 stty:set tty
    的头像 发表于 10-04 15:28 633次阅读

    STM32 USART自动波特率检测

    电子发烧友网站提供《STM32 USART自动波特率检测.pdf》资料免费下载
    发表于 09-25 15:09 2次下载
    STM32 USART<b class='flag-5'>自动波特率</b>检测

    单片机有没有串口波特率自动识别算法?

    单片机有没有串口波特率自动识别算法
    发表于 09-21 07:09

    串口传输速率低于波特率怎么办 串口通信的波特率如何设置

    如果串口传输速率低于波特率,您可以尝试以下方法来解决问题:   1. 检查硬件连接:确保串口连接正确且牢固。检查连接线是否完好,确保没有松动或断开的接触。   2. 检查波特率设置
    的头像 发表于 09-08 16:23 3653次阅读

    M0的USART波特率自动识别问题的解决方案

    某客户用 STM32F051 的芯片做了一个自动波特率的实验(代码是仿照 ST 库里面的例子写的),用串口发送数字键的 ASCII 码,在接收端只有奇数 ASCII 被确认。。
    发表于 09-07 08:28

    什么是串口波特率串口波特率的分类及应用详解

    直接影响到通信的质量和效率。本文将介绍串口波特率的分类、选择以及应用。串口波特率的分类根据不同的应用需求,
    的头像 发表于 08-08 10:09 3299次阅读
    什么是<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>?<b class='flag-5'>串口</b><b class='flag-5'>波特率</b>的分类及应用详解

    NUC130串口用PDMA收发,把波特率改为任意的波特率串口不接收了怎么解决?

    有人用NUC130的么,串口用PDMA收发,出现一个问题,假如波特率是:19200,固定不变,与串口助手通信是正常的,,当串口助手,把波特率
    发表于 06-27 06:25

    波特率是什么?波特率设计

    从宏观理解,波特率表征了串口的传输速度。
    的头像 发表于 06-05 15:19 1.1w次阅读
    <b class='flag-5'>波特率</b>是什么?<b class='flag-5'>波特率</b>设计

    串口通信与波特率详解

    通信来说,虽然没有同步时钟,但是通信双方必须约定并遵循同样的设置,这就需要异步串行通信中一个重要的参数来设置,该参数即波特率。   波特率串口通信的速率,它表示每秒传输二进制数据的位数,单位是bps
    发表于 05-15 14:52