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

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

3天内不再提示

英创信息技术串口校验位的Mark/Space设置在英创主板中的应用

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-04 11:44 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

英创Linux主板可以通过RS485总线挂载多个单片机组成多机系统,如图1所示,其中Linux主机作为上位机,单片机作为从机,485总线最多能挂载256个从机。系统工作的时候,每一个从机都有自己的地址(从机号),上位机首先发送从机的地址,再发送命令/数据,其发送的命令/数据可以被每一个从机接收,从机收到命令和数据后,如果地址和自己的相符,就进行应答。

图1 Linux主机与单片机组成的多机系统

图2 多机通信帧格式

单片机每收到一个字节都要产生中断,在一般情况下,当Linux主机向从机1发送数据的时候,从机2、3在每一个字节都要产生中断,不论传输的是地址还是数据,也不论是不是跟自己通信。当从机设备比较多、传输数据比较频繁的时候,单片机的负载将大大增加,影响正常的工作。

比较通用的解决办法是充分利用串口固定校验位(Parity Stick)的功能,使用Mark/Space校验位区分地址和数据,如图2所示的多机通信帧中,发送和接收地址字节时,可以使用Mark校验(也可以使用Space校验),发送和接收数据字节时,使用Space校验(也可以使用Mark校验)。系统初始化的时候,所有的从机都设置成Mark校验,进入等待状态。主机发送第一个字节(addr = 从机1)的时候使用Mark校验。这时,所有的从机都收到了addr,并通过校验产生中断。在从机的中断程序中,如果addr和自己的地址相符,就将从机设置成Space校验(从机1),否则,继续保持Mark校验(从机2、3)。紧接着,主机发送data1、data2的时候使用Space校验,这时,由于从机2、3不能通过Space校验,将不会产生中断,只有从机1会产生中断,应答主机。这样就大大降低了处于等待状态的从机2、3的中断负载。

对Linux目前的串口驱动程序而言,在逻辑上应用程序可以先设置一次Mark校验位,write一个地址字节,再设置一次Space校验,接着write多个数据字节来实现多机通信。但是,两次调用write之间可能会有较大的时间间隙,导致单片机接收数据超时,多机通信失败。为此,英创公司专门修改了Linux串口驱动程序,在不增加新的API调用的前提下,只需要在应用程序中连续两次设置校验位即可使串口驱动进入ADDR_DATA_MODE模式,支持Mark/Space多机通信,并且将同一帧数据的addr、data连续发送出去(应用程序只调用一次write函数)。应用程序具体步骤如下(为方便校验位设置,编写了一个校验位设置函数):

1、校验位设置函数

intCSerial::SetParity(intparity)

{

structtermios new_opt;

intstatus;

unsignedintold_ccflag;

tcgetattr(m_fd,&new_opt);

old_ccflag = new_opt.c_cflag;

new_opt.c_cflag &= ~PARODD ;

new_opt.c_cflag &= ~CMSPAR ;

if(parity == 0)

{

//使用Space校验 标记数据

new_opt.c_cflag |= PARENB | CS8 | CMSPAR;

}

elseif(parity == 1)

{

//使用Mark校验 标记地址

new_opt.c_cflag |= PARENB | CS8 | CMSPAR | PARODD;

}

elseif(parity == 2)

{ //使用偶校验

new_opt.c_cflag |= PARENB; /* Enable parity */

new_opt.c_cflag &= ~PARODD; /* 转换为偶效验*/

}

elseif(parity == 3)

{

//使用奇校验

new_opt.c_cflag |= (PARODD | PARENB); /* 设置为奇效验*/

}

else

{

new_opt.c_cflag = old_ccflag;

}

status = tcsetattr(m_fd,TCSANOW,&new_opt);

returnstatus;

}

2、主程序两次调用校验位设置函数,进入ADDR_DATA_MODE模式

Buf[0] = 0x39;

Buf[1] = 0xC1;

Buf[2] = 0x80;

Buf[3] = 0x1;

Buf[4] = 0x0;

//连续两次设置校验位,进入ADDR_DATA_MODE.

//先设置数据使用的校验位,后设置地址使用的校验位

m_Serial.SetParity(0); //数据使用space校验

m_Serial.SetParity(1); //地址使用mark校验

sleep(1);

m_Serial.WritePort( Buf, 5 );

如上程序将5个字节一起发送出去,其中Buf[0]作为地址,使用mark校验,Buf[1-4]作为数据,使用space校验,波形如图3所示。所有从机收到地址后,都通过校验位,产生中断,但仅地址为0x39的从机会将自己的校验位设置为0。之后Buf[1-4]仅有从机0x39能够产生接收中断,应答主机。

发送完这5个字节后,就退出了ADDR_DATA_MODE模式,继续串口发送的所有字节都使用space校验(先设置的校验位)。如果需要其他校验方式,可以调用SetParity()进行设置。

图3 ADDR_DATA_MODE发送波形图

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

    关注

    88

    文章

    11628

    浏览量

    218006
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6107

    浏览量

    36952
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    新时代的硬核基石:龙芯工控主板助力信产业新基建

    在数字技术重塑产业格局的今天,信产业已成为保障国家信息技术安全的核心战略。作为工业自动化系统的大脑,工控主板的自主可控程度直接决定信创新基建的稳固性。
    的头像 发表于 11-05 13:54 138次阅读

    智慧新核心,龙芯主板助力信体系再升级

    信息技术飞速发展的当下,信体系的自主可控与创新升级已成为国家战略层面的关键任务。作为信产业发展的重要基础硬件支撑,国产工控主板正发挥着
    的头像 发表于 08-11 09:14 566次阅读

    飞腾主板为信产业发展提高硬实力

    信息技术飞速发展的当下,信产业已成为我国实现科技自立自强、保障国家信息安全的关键领域。信,即信息技
    的头像 发表于 07-22 18:20 560次阅读

    浪潮澎湃,国产主板迎来黄金时代!

    2025年7月,表示必须在2027年底前完成信100%替代,覆盖基础硬件、基础软件等核心领域。信息技术应用创新浪潮席卷下,国产主板作为计算机系统的骨架,正从幕后走向台前。政策加持、
    的头像 发表于 07-21 14:00 367次阅读

    诺达EDA专题技术研讨会成都站圆满收官

    近日,诺达的EDA专题技术研讨会在成都“芯火”双基地成功举办,吸引了来自芯片设计企业、科研院所及产业链上下游的三十余家单位参会,共同探索国产EDA工具芯片设计关键领域的创新突破与
    的头像 发表于 07-21 10:38 728次阅读

    芯知识|广州唯电子语音芯片通信控制方式解析:多模式选择与工程适配指南

    9600(可调整)支持复杂指令集:包括文件索引播放、插播、音量32级调节、循环模式设置等数据格式:起始1+数据8+停止
    的头像 发表于 06-27 08:52 1483次阅读
    芯知识|广州唯<b class='flag-5'>创</b>电子语音芯片通信控制方式解析:多模式选择与工程适配指南

    京能信息莅临软国际数字电力科中心调研

    近日,北京京能信息技术有限公司(以下简称“京能信息”)党总支书记、董事长胡耀宇,党总支副书记、总经理梁锦华一行赴能源谷数字电力科中心调研交流,与软国际开展战略合作洽谈。
    的头像 发表于 06-26 17:46 1297次阅读

    中星微技术斩获2025金牛科企业奖

    6月14日,由中国证券报主办的2025科金牛奖颁奖典礼在上海市举行,2025科金牛奖获奖名单现场揭晓。其中中星微技术获得新一代信息技术金牛科
    的头像 发表于 06-16 14:16 1048次阅读

    科普|信是什么?一文读懂“信息技术应用创新”战略

    什么是信?信,即“信息技术应用创新”,是国家推动IT系统自主可控、安全可控的重要战略工程。它不仅是技术层面的创新,更承载着保障国家网络安全、推动产业升级和实现数字主权的重任。简单来
    的头像 发表于 06-13 10:06 6348次阅读
    科普|信<b class='flag-5'>创</b>是什么?一文读懂“<b class='flag-5'>信息技术</b>应用创新”战略

    芯知识|广州唯电子语音芯片UART通信协议解析:发码长度与校验码计算

    一、UART通信协议概述UART(通用异步收发器)是一种广泛应用于嵌入式系统的串行通信协议,其核心特点为无需时钟同步,通过起始、数据校验位和停止构成数据帧。
    的头像 发表于 05-27 08:48 530次阅读
    芯知识|广州唯<b class='flag-5'>创</b>电子语音芯片UART通信协议解析:发码长度与<b class='flag-5'>校验</b>码计算

    诺达斩获第四届“赢未来”集成电路赛道一等奖

    日前,“赢未来”第四届长三角G60科走廊科技与产业创新大赛(松江赛区)暨第五届“海聚英才”全球创新创业大赛(松江区选拔赛)成功举办,诺达凭借其EDA软件及解决方案,从80余个硬科技项目中脱颖而出,斩获集成电路赛道一等奖!
    的头像 发表于 05-23 10:16 740次阅读

    浪潮下,国产主板有什么新的发展机遇?

    信息技术应用创新浪潮的推动下,国产主板迎来了诸多新的发展机遇。信产业旨在实现信息技术领域的自主可控,这一战略目标为国产
    的头像 发表于 05-09 09:24 575次阅读
    信<b class='flag-5'>创</b>浪潮下,国产<b class='flag-5'>主板</b>有什么新的发展机遇?

    韧科技推出新主控,4K随机读写超120万IOPS行业标杆

    电子发烧友网报道(文/黄山明)作为一家成立于2017年的年轻公司,韧科技自创立以来一直专注于存储赛道,以成为全球存储主控芯片的领军企业为愿景。此次MemoryS 2025存储峰会上,韧科技带来
    的头像 发表于 03-26 00:10 3079次阅读
    <b class='flag-5'>英</b>韧科技推出新主控,4K随机读写超120万IOPS<b class='flag-5'>创</b>行业标杆

    芯盛智能荣获2024年信息技术应用创新工作委员会卓越贡献成员单位

    日前,中国电子工业标准化技术协会信息技术应用创新工作委员会(以下简称 “信工委会”)2024 年度总结座谈会于北京隆重举行。此次会议对
    的头像 发表于 01-20 09:56 933次阅读

    飞腾助力首届教育信息技术应用创新大赛圆满落幕

    近日,由中国教育技术协会主办,教育部教育管理信息中心教育信实验室、公安部第三研究所、中国电子工业标准化技术协会信工委会支持,北京航空航天
    的头像 发表于 12-24 09:57 768次阅读