基于STM32 ZLG9518S设计串口服务器.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于STM32 ZLG9518S设计串口服务器

基于STM32 ZLG9518S设计串口服务器   摘 要   本文介绍了采用周立功的多串口芯片ZLG9518S与STM32F103RX控制器设计的串口服务器,实现24路串口通信,应用于智能电能表生产的通信测试。本文给出了接口设计原理图和程序处理流程。   【关键词】串口 串口服务器 STM32 ZLG9518S RS485   本文的设计运用于智能电表生产过程中多表位同时通信服务,实现了设置参数、多表位通信测试测试同步进行。在流水线生产的过程中并行操作节省生产时间,提高生产效率。   1 硬件设计   1.1 主控单元的设计   主控制芯片,采用的是ST(意法半导体)公司的32位控制器STM32F103RBT6芯片。该芯片整合了工作频率为72MHz的高性能ARM CortexTM-M3 32位RISC内核、高速嵌入式存储器,带有128K字节的闪存,20K字节SRAM存储器; 51个GPIO, 3个通用16位定时器和1个PWM定时器;同时配备了2个硬件2I2C和SPI接口、3个硬件USART接口、1个硬件USB接口和1个CAN接口;工作电压在2.0~3.6V;工作于?C40~+85°C的温度范围;多种模式的节电工作方式,非常适合于低功耗应用设计。   本设计中,与测试表位通信功能单元的设计,使用了1路SPI接口作为与ZLG9518S的数据交换SPI总线,用3个GPIO控制三个ZLG9518S作片选,3路外部中断触发数据处理。与上位机PC之间的通信,使用了1路USB接口和1路USART接口,互为备用,以适应上位机不同的接口。   1.2 通信单元的设计   通信单元的设计,采用多串口芯片ZLG9518S的独立的8路串口,分别驱动外部的8路接口。由于ZLG9518S的工作电压在3.3V,驱动外部接口时,需要连接电平转换芯片,以匹配通信线路上的电平。本方案中,采用了3颗ZLG9518S芯片作为串口扩展,每一颗芯片提供8路串口,一共实现24路通信接口。ZLG9518S内部有一个FIFO寄存器和指令仲裁模块,能够及时的处理8路串口返回的数据。通过设置其内部的寄存器,当收到的字节数达到设定值时,发出中断信号,提醒MCU及时的读取数据,避免数据丢失。   本设计中,外部的电平匹配芯片采用的是上海贝岭公司的专业RS485通信芯片BL3085A。采用光耦作为传输中介,对外部输入信号进行电气隔离和电平转换,加强了产品的绝缘性防护,避免外面的电气干扰而导致核心控制部分损坏。电路的设计中,RS485芯片默认为接收状态,通过传输线上TXD电平的转换来切换RS485芯片的工作状态,节省了IO口资源以及外围电路。本方案中的24路串口的设计原理是相同的,在本文中给出了其中的一路设计的原理图。如图1所示。   2 程序设计   2.1 控制程序流程   串口服务器将上位机的命令同时传递到多路串口连接的各个节点,抄读各节点数据,传递数据至上位机。   MCU上电后,对系统的时钟进行初时化设置,然后对USB、USART、SPI、GPIO等外设进行功能配置,再对ZLG95的控制模式进行配置。完成配置工作后,程序进入通信等待模式,监控是否有上位机请求通信。当上位机发生通信请求事件时,MCU产生通信中断,程序进入中断处理,完成通信请求服务,再次进入循环。系统初始化   系统初始化主要是设置系统各个功能模块的时钟源、工作频率,其配置的代码如下:   voidSet_System(void){   RCC_DeInit();   RCC_HSEConfig(RCC_HSE_ON);//使能外部时钟源   if(HSEStartUpStatus == SUCCESS) {   //外部时钟启动成功,外设总线分配时钟   ……………………..   //USB时钟72M   RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);   RCC_PLLCmd(ENABLE);//使能倍频   while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET){ }   RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);   while(RCC_GetSYSCLKSource() != 0x08) { } //等待倍频锁定   }   }   2.2 ZLG9518S工作模式配置   本方案中,设置ZLG9518S的串口通信波特率为9600bps,数据格式为8bit,1bit的停止位,偶校验。FIFO中断使能触发设定为244byte,接收到244字节数据时产生接收中断,MCU接收到中断信号时,开始读取F

文档评论(0)

189****7685 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档