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

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

3天内不再提示

【中科昊芯Start_DSC28027勇士开发板试用体验】串口与上位机通信

开发板试用精选 来源:开发板试用 作者:电子发烧友论坛 2022-11-21 11:16 次阅读
本文来源电子发烧友社区,作者:jf_53933321, 帖子地址:https://bbs.elecfans.com/jishu_2287001_1_1.html


上一篇讲了pwm,这一篇来介绍下串口的试用。

1. 串口通信介绍
串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485

2. haawking勇士板上的串口
从原理图上可以看到串口发送和接收管脚通过ch340g芯片转成了miniusb接口,用miniusb转usb的数据线就可以把电脑和板子接起来。
poYBAGKp9b-AVUTWAADwgIekhE4612.png

CH340 是一个USB 总线的转接芯片,实现USB 转串口、USB 转IrDA 红外或者USB 转打印口。
在串口方式下,CH340 提供常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB 总线。
在红外方式下,CH340 外加红外收发器即可构成USB 红外线适配器,实现SIR 红外线通讯。
3. 上代码
如前面原理中所说通信双方需要约定一致的数据包格式,我在实验中用9600波特率,数据位8位、无校验位,停止位为1。向电脑端发送一些配置信息后,输出hello haawking!。代码如下。


  1. /*主程序入口*/
  2. int main(void)
  3. {
  4. /*初始化系统控制*/
  5. InitSysCtrl();
  6. /*初始化内存控制寄存器,使能内存流水线模式*/
  7. InitFlash();
  8. /*初始化串口通信的GPIO口*/
  9. /*GPIO28: SCIRXDA*/
  10. /*GPIO29: SCITXDA*/
  11. InitSciGpio();
  12. /*关闭中断*/
  13. DINT;
  14. /*初始化PIE控制*/
  15. InitPieCtrl();
  16. /*关闭CPU中断,清除中断标志位*/
  17. IER = 0x0000;
  18. IFR = 0x0000;
  19. /*初始化PIE中断向量表*/
  20. InitPieVectTable();
  21. /*SCI寄存器配置*/
  22. Scia_Config(9600);
  23. /*使能外部中断和CPU中断*/
  24. EINT;
  25. /*通过SCI发送字符串*/
  26. Scia_Print("--------- sci interrupt test ----------rn");
  27. Scia_Print("Baud Rate: 9600rn");
  28. Scia_Print("Data Bits: 8rn");
  29. Scia_Print("Parity: nonern");
  30. Scia_Print("Stop Bits: 1rn");
  31. Scia_Print("Hello Haawking!rn");
  32. Scia_Print("rn");
  33. for (;;)
  34. {
  35. }
  36. return 0;
  37. }
复制代码



  1. /******************************************************************
  2. *函数名:Scia_Config(uint32 baud)
  3. *参 数: baud,串口波特率
  4. *返回值:无
  5. *作 用: SCIA 初始化配置
  6. ******************************************************************/
  7. void Scia_Config(uint32 baud)
  8. {
  9. uint32 div = 0;
  10. uint32 divsel = 0;
  11. uint32 lospcp = 0;
  12. uint32 lspclk = 0;
  13. uint16 brr = 0;
  14. //获取系统时钟的倍频、分频和低速外部时钟的值
  15. div = SysCtrlRegs.PLLCR.bit.DIV;
  16. divsel = SysCtrlRegs.PLLSTS.bit.DIVSEL;
  17. lospcp = SysCtrlRegs.LOSPCP.bit.LSPCLK;
  18. if (lospcp != 0)
  19. {
  20. lospcp = lospcp * 2;
  21. }
  22. else
  23. {
  24. lospcp = 1;
  25. }
  26. /*分频值设置
  27. divsel为 0时,系统时钟4分频
  28. divsel为 1时,系统时钟4分频
  29. divsel为 2时,系统时钟2分频
  30. divsel为 3时,系统时钟1分频*/
  31. switch (divsel)
  32. {
  33. case 0:
  34. case 1:
  35. lspclk = 12000000 * div / 4 / lospcp;
  36. break;
  37. case 2:
  38. lspclk = 12000000 * div / 2 / lospcp;
  39. break;
  40. case 3:
  41. lspclk = 12000000 * div / 1 / lospcp;
  42. break;
  43. }
  44. brr = lspclk / (baud * 8) - 1;
  45. /*SCI 停止位设置 0:一个停止位 1:两个停止位*/
  46. SciaRegs.SCICCR.bit.STOPBITS = 0;
  47. /*SCI 奇偶校验位 0:奇偶校验 1:偶偶校验*/
  48. SciaRegs.SCICCR.bit.PARITY = 0;
  49. /*SCI 奇偶校验使能 0:关闭 1:启用*/
  50. SciaRegs.SCICCR.bit.PARITYENA = 0;
  51. /*SCI 字符长度 0:1个字长1:2个字长 ... 7:8个字长*/
  52. SciaRegs.SCICCR.bit.SCICHAR = 7;
  53. /*使能SCI的发送机和接收机*/
  54. SciaRegs.SCICTL1.bit.TXENA = 1;
  55. SciaRegs.SCICTL1.bit.RXENA = 1;
  56. /*SCI 16位波特率选择寄存器 高8位*/
  57. SciaRegs.SCIHBAUD = (uint8) ((brr >> 8) & 0xff);
  58. /*SCI 16位波特率选择寄存器 低8位*/
  59. SciaRegs.SCILBAUD = (uint8) (brr & 0xff);
  60. /*SCI 发送中断使能*/
  61. SciaRegs.SCICTL2.bit.TXINTENA = 1;
  62. /*SCI 接收中断使能*/
  63. SciaRegs.SCICTL2.bit.RXBKINTENA = 1;
  64. /*SCI 指定发送和接收中断处理函数,该寄存器受EALLOW保护*/
  65. EALLOW;
  66. PieVectTable.SCIRXINTA = &sciaRxIsr;
  67. PieVectTable.SCITXINTA = &sciaTxIsr;
  68. EDIS;
  69. /*PIE Group 9, SCIRXINTA*/
  70. PieCtrlRegs.PIEIER9.bit.INTx1 = 1;
  71. /*PIE Group 9, SCITXINTA*/
  72. PieCtrlRegs.PIEIER9.bit.INTx2 = 1;
  73. IER_ENABLE(M_INT9);
  74. /*SCI 软件复位,重新启动SCI*/
  75. SciaRegs.SCICTL1.bit.SWRESET = 1;
  76. }
复制代码

4. 实际运行效果
在电脑端打开串口调试助手,打开对应串口,设置9600波特率,数据位8位、无校验位,停止位为1,信息显示为ascii,板子上电之后就会在串口调试助手里接收到hello haaking!信息。截图如下。
poYBAGKp9b-AT7wMAACfHQhCChI381.png
pYYBAGKp9cCAD_bZAALaLTuNE84662.jpg

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

    关注

    5

    文章

    79

    浏览量

    5131
  • 开发板试用
    +关注

    关注

    3

    文章

    300

    浏览量

    2028
收藏 人收藏

    评论

    相关推荐

    全志A133开发板安卓系统调试串口复用成普通串口方法-触觉智能EVB1309

    本文介绍了在开发板/主板串口接口不够的情况下,可将调试串口改为普通串口使用。基于触觉智能的全志A133开发板(型号EVB1309)演示,该主
    的头像 发表于 09-26 18:44 2017次阅读
    全志A133<b class='flag-5'>开发板</b>安卓系统调试<b class='flag-5'>串口</b>复用成普通<b class='flag-5'>串口</b>方法-触觉智能EVB1309

    喜报!中科荣获国家级专精特新“小巨人”企业称号

    喜讯!近日,国家工业和信息化部门正式揭晓了第六批国家专精特新“小巨人”企业名单,中科凭借卓越的技术实力和创新能力,荣获了专精特新“小巨人”企业殊荣。这一荣誉不仅是对中科
    的头像 发表于 09-14 08:00 558次阅读
    喜报!<b class='flag-5'>中科</b><b class='flag-5'>昊</b><b class='flag-5'>芯</b>荣获国家级专精特新“小巨人”企业称号

    【作品合集】龙芯2K0300蜂鸟开发板试用精选

    】第一章:上电串口调试器 作者:@FFD80【龙芯2K0300蜂鸟试用】板载外设通信测试 作者:@ele2022【龙芯2K0300蜂鸟
    发表于 09-10 18:17

    linux开发板和单片开发的区别

    硬件架构 Linux开发板和单片开发在硬件架构上有很大的区别。Linux开发板通常基于ARM、x86或其他处理器架构,具有较高的处理能力和内存容量。而单片
    的头像 发表于 08-30 15:30 555次阅读

    上位与下位实时通信的实现

    在工业自动化、远程控制、数据采集与处理等领域,上位与下位之间的实时通信是实现高效、准确的数据交换和系统控制的基础。本文旨在介绍实现上位
    的头像 发表于 06-28 17:01 1174次阅读

    点击参与米尔NXP i.MX 93开发板有奖试用

    米尔与NXP合作发布的新品基于NXPi.MX93应用处理器的MYD-LMX9X开发板免费试用活动来啦~~米尔提供了3块价值678元的MYD-LMX9X开发板发起试用活动您不仅可以免费体
    的头像 发表于 06-13 08:02 438次阅读
    点击参与米尔NXP i.MX 93<b class='flag-5'>开发板</b>有奖<b class='flag-5'>试用</b>

    上位与下位串口通信的区别在哪

    上位与下位串口通信的区别主要体现在以下几个方面: 通信方式的区别
    的头像 发表于 06-06 10:34 864次阅读

    开发板使用ASCLIN Master通信串口发送的数据,开发板收不到是怎么回事?

    开发板使用ASCLIN Master通信,通过LIN调试器和电脑的上位通信,目前开发板发送的8
    发表于 06-04 13:09

    免费!NXP i.MX 93开发板有奖试用

    米尔与NXP合作发布的新品基于NXPi.MX93应用处理器的MYD-LMX9X开发板免费试用活动来啦~~米尔提供了2块价值678
    的头像 发表于 05-23 08:01 635次阅读
    免费!NXP i.MX 93<b class='flag-5'>开发板</b>有奖<b class='flag-5'>试用</b>

    51单片开发板的主要功能 51单片开发板能做什么

    51单片开发板是一种基于8051系列单片机芯片的开发板,具有丰富的功能和广泛的应用。下面将详细介绍51单片开发板的主要功能以及能够实现的
    的头像 发表于 01-23 15:52 3293次阅读

    QT串口通信的简单使用

    QT串口通信上位和下位通信常用的通信方式, 也
    的头像 发表于 01-15 09:27 1753次阅读
    QT<b class='flag-5'>串口</b><b class='flag-5'>通信</b>的简单使用

    使用爱派Pro开发板部署人体姿态估计模型

    在经过之前对于开发板的使用,以及通过几个爱派官方给出的示例demo(mobilenet/yolov5)在开发板上的部署之后,笔者也逐渐了解了爱派这块
    的头像 发表于 01-09 09:50 1326次阅读
    使用爱<b class='flag-5'>芯</b>派Pro<b class='flag-5'>开发板</b>部署人体姿态估计模型

    【爱派 Pro 开发板试用体验】简单开箱和系统初步体验

    非常感谢电子发烧友平台组织本次试用活动,感谢爱元智为我们的爱派 Pro (AXera-Pi Pro)开发板。 一、简单开箱 拆开快递包装,看到的是这样的: 爱
    发表于 11-26 14:38

    【爱派 Pro 开发板试用体验】开箱测试

    的各种纸盒包装结实很多。 打开后发现,其中包括一个开发板和电源。还有一个口袋里面有个螺母,不知道什么用途,我现在把它安装在电源的接头上了,好像也不是特别合适。 开发板上的各种接口似乎都是双份,包括
    发表于 11-20 22:09

    【涂鸦T2-U开发板试用体验】初识及试玩开发板

    期待已久的涂鸦开发板已经到了一段时间了,平时上班很忙,没有时间来学习实践,好不容易快熬到周末,挤出一点时间来玩一玩心爱的开发板。板子见图: 标准的长条形设计,一端是天线部分,用来做无线通信
    发表于 11-17 22:44