本文来源电子发烧友社区,作者: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的数据线就可以把电脑和板子接起来。
CH340 是一个USB 总线的转接芯片,实现USB 转串口、USB 转IrDA 红外或者USB 转打印口。
在串口方式下,CH340 提供常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB 总线。
在红外方式下,CH340 外加红外收发器即可构成USB 红外线适配器,实现SIR 红外线通讯。
3. 上代码
如前面原理中所说通信双方需要约定一致的数据包格式,我在实验中用9600波特率,数据位8位、无校验位,停止位为1。向电脑端发送一些配置信息后,输出hello haawking!。代码如下。
复制代码
复制代码
4. 实际运行效果
在电脑端打开串口调试助手,打开对应串口,设置9600波特率,数据位8位、无校验位,停止位为1,信息显示为ascii,板子上电之后就会在串口调试助手里接收到hello haaking!信息。截图如下。
上一篇讲了pwm,这一篇来介绍下串口的试用。
1. 串口通信介绍
串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。在串口通信中,常用的协议包括RS-232、RS-422和RS-485。
2. haawking勇士板上的串口
从原理图上可以看到串口发送和接收管脚通过ch340g芯片转成了miniusb接口,用miniusb转usb的数据线就可以把电脑和板子接起来。
CH340 是一个USB 总线的转接芯片,实现USB 转串口、USB 转IrDA 红外或者USB 转打印口。
在串口方式下,CH340 提供常用的MODEM联络信号,用于为计算机扩展异步串口,或者将普通的串口设备直接升级到USB 总线。
在红外方式下,CH340 外加红外收发器即可构成USB 红外线适配器,实现SIR 红外线通讯。
3. 上代码
如前面原理中所说通信双方需要约定一致的数据包格式,我在实验中用9600波特率,数据位8位、无校验位,停止位为1。向电脑端发送一些配置信息后,输出hello haawking!。代码如下。
- /*主程序入口*/
- int main(void)
- {
- /*初始化系统控制*/
- InitSysCtrl();
- /*初始化内存控制寄存器,使能内存流水线模式*/
- InitFlash();
- /*初始化串口通信的GPIO口*/
- /*GPIO28: SCIRXDA*/
- /*GPIO29: SCITXDA*/
- InitSciGpio();
- /*关闭中断*/
- DINT;
- /*初始化PIE控制*/
- InitPieCtrl();
- /*关闭CPU中断,清除中断标志位*/
- IER = 0x0000;
- IFR = 0x0000;
- /*初始化PIE中断向量表*/
- InitPieVectTable();
- /*SCI寄存器配置*/
- Scia_Config(9600);
- /*使能外部中断和CPU中断*/
- EINT;
- /*通过SCI发送字符串*/
- Scia_Print("--------- sci interrupt test ----------rn");
- Scia_Print("Baud Rate: 9600rn");
- Scia_Print("Data Bits: 8rn");
- Scia_Print("Parity: nonern");
- Scia_Print("Stop Bits: 1rn");
- Scia_Print("Hello Haawking!rn");
- Scia_Print("rn");
- for (;;)
- {
- }
- return 0;
- }
- /******************************************************************
- *函数名:Scia_Config(uint32 baud)
- *参 数: baud,串口波特率
- *返回值:无
- *作 用: SCIA 初始化配置
- ******************************************************************/
- void Scia_Config(uint32 baud)
- {
- uint32 div = 0;
- uint32 divsel = 0;
- uint32 lospcp = 0;
- uint32 lspclk = 0;
- uint16 brr = 0;
- //获取系统时钟的倍频、分频和低速外部时钟的值
- div = SysCtrlRegs.PLLCR.bit.DIV;
- divsel = SysCtrlRegs.PLLSTS.bit.DIVSEL;
- lospcp = SysCtrlRegs.LOSPCP.bit.LSPCLK;
- if (lospcp != 0)
- {
- lospcp = lospcp * 2;
- }
- else
- {
- lospcp = 1;
- }
- /*分频值设置
- divsel为 0时,系统时钟4分频
- divsel为 1时,系统时钟4分频
- divsel为 2时,系统时钟2分频
- divsel为 3时,系统时钟1分频*/
- switch (divsel)
- {
- case 0:
- case 1:
- lspclk = 12000000 * div / 4 / lospcp;
- break;
- case 2:
- lspclk = 12000000 * div / 2 / lospcp;
- break;
- case 3:
- lspclk = 12000000 * div / 1 / lospcp;
- break;
- }
- brr = lspclk / (baud * 8) - 1;
- /*SCI 停止位设置 0:一个停止位 1:两个停止位*/
- SciaRegs.SCICCR.bit.STOPBITS = 0;
- /*SCI 奇偶校验位 0:奇偶校验 1:偶偶校验*/
- SciaRegs.SCICCR.bit.PARITY = 0;
- /*SCI 奇偶校验使能 0:关闭 1:启用*/
- SciaRegs.SCICCR.bit.PARITYENA = 0;
- /*SCI 字符长度 0:1个字长1:2个字长 ... 7:8个字长*/
- SciaRegs.SCICCR.bit.SCICHAR = 7;
- /*使能SCI的发送机和接收机*/
- SciaRegs.SCICTL1.bit.TXENA = 1;
- SciaRegs.SCICTL1.bit.RXENA = 1;
- /*SCI 16位波特率选择寄存器 高8位*/
- SciaRegs.SCIHBAUD = (uint8) ((brr >> 8) & 0xff);
- /*SCI 16位波特率选择寄存器 低8位*/
- SciaRegs.SCILBAUD = (uint8) (brr & 0xff);
- /*SCI 发送中断使能*/
- SciaRegs.SCICTL2.bit.TXINTENA = 1;
- /*SCI 接收中断使能*/
- SciaRegs.SCICTL2.bit.RXBKINTENA = 1;
- /*SCI 指定发送和接收中断处理函数,该寄存器受EALLOW保护*/
- EALLOW;
- PieVectTable.SCIRXINTA = &sciaRxIsr;
- PieVectTable.SCITXINTA = &sciaTxIsr;
- EDIS;
- /*PIE Group 9, SCIRXINTA*/
- PieCtrlRegs.PIEIER9.bit.INTx1 = 1;
- /*PIE Group 9, SCITXINTA*/
- PieCtrlRegs.PIEIER9.bit.INTx2 = 1;
- IER_ENABLE(M_INT9);
- /*SCI 软件复位,重新启动SCI*/
- SciaRegs.SCICTL1.bit.SWRESET = 1;
- }
4. 实际运行效果
在电脑端打开串口调试助手,打开对应串口,设置9600波特率,数据位8位、无校验位,停止位为1,信息显示为ascii,板子上电之后就会在串口调试助手里接收到hello haaking!信息。截图如下。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
中科昊芯
+关注
关注
5文章
80浏览量
5154 -
开发板试用
+关注
关注
3文章
301浏览量
2092
发布评论请先 登录
相关推荐
瑞芯微主板/开发板Linux系统播放音频方法,触觉智能RK3562开发板演示
本文介绍瑞芯微方案主板/开发板Linux系统播放音频的方法,触觉智能RK3562开发板演示,通用RK3566、RK3568、RK3588等
基于Arduino的串口通信项目
基于Arduino的串口通信项目涉及多个方面,包括硬件连接、软件编程、串口参数配置等。 一、硬件准备 Arduino开发板 :确保你有一块Arduino
追加名额丨米尔瑞芯微RK3576开发板有奖试用
米尔与瑞芯微合作发布的新品基于瑞芯微RK3576应用处理器的MYD-LR3576开发板免费试用活动加码啦~~米尔追加了2块价值849元的MYD-LR3576
有奖丨米尔 瑞芯微RK3576开发板免费试用
米尔与瑞芯微合作发布的新品基于瑞芯微RK3576应用处理器的MYD-LR3576开发板免费试用活动来啦~~米尔提供了7块价值849元的MYD-LR3576
喜报!中科昊芯荣获国家级专精特新“小巨人”企业称号
喜讯!近日,国家工业和信息化部门正式揭晓了第六批国家专精特新“小巨人”企业名单,中科昊芯凭借卓越的技术实力和创新能力,荣获了专精特新“小巨人”企业殊荣。这一荣誉不仅是对中科
linux开发板和单片机开发的区别
硬件架构 Linux开发板和单片机开发在硬件架构上有很大的区别。Linux开发板通常基于ARM、x86或其他处理器架构,具有较高的处理能力和内存容量。而单片
上位机与下位机实时通信的实现
在工业自动化、远程控制、数据采集与处理等领域,上位机与下位机之间的实时通信是实现高效、准确的数据交换和系统控制的基础。本文旨在介绍实现上位
点击参与米尔NXP i.MX 93开发板有奖试用
米尔与NXP合作发布的新品基于NXPi.MX93应用处理器的MYD-LMX9X开发板免费试用活动来啦~~米尔提供了3块价值678元的MYD-LMX9X开发板发起试用活动您不仅可以免费体
开发板使用ASCLIN Master通信,串口发送的数据,开发板收不到是怎么回事?
开发板使用ASCLIN Master通信,通过LIN调试器和电脑的上位机通信,目前开发板发送的8
发表于 06-04 13:09
51单片机开发板的主要功能 51单片机开发板能做什么
51单片机开发板是一种基于8051系列单片机芯片的开发板,具有丰富的功能和广泛的应用。下面将详细介绍51单片机开发板的主要功能以及能够实现的
评论