STM8固件库+IAR 之--UART3

出处:eefocus 发布于:2018-06-02 14:34:44

  3:红外编码模式

  4:智能卡模拟功能

  以上功能并不是所有串口都支持,stm8多的是3个串口,配置简单,多说无益

  本来想先写定时器1来着,可手头上正好有串口的程序,整理整理先贴上来呗~

  首先到stm8s_conf.h把 #define _UART3 (1) 打开,否则uart3不能用,重新编译一下静态库

  贴main.c代码:

  #include "stm8s.h"

  /*========内部高速时钟初始化========*/

  void init_hsiclk(void)

  {

  CLK_DeInit(); //寄存器复位

  CLK_HSICmd(ENABLE); //内部高速时钟使能

  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2); //内部8分频 2M

  }

  /*==========串口初始化===========*/

  void init_uart3(void)

  {

  UART3_DeInit(); //复位

  UART3_Init(9600,UART3_WORDLENGTH_8D,UART3_STOPBITS_1,UART3_PARITY_NO,UART3_MODE_TXRX_ENABLE);//9600,8,1,0 读写使能

  UART3_Cmd(ENABLE);

  }

  /*========GPIO初始化========*/

  void init_gpio(void)

  {

  GPIO_DeInit(GPIOD); //PD口复位

  GPIO_Init(GPIOD , GPIO_PIN_2 , GPIO_MODE_OUT_PP_LOW_SLOW); // LED2初始化 推挽输出

  }

  /*========延时函数===========*/

  void delay(u16 n)

  {

  u16 i=0;

  while(n--)

  {

  for(i=0;i<330;i++);

  }

  }

  /*========主函数===========*/

  void main(void)

  {

  init_hsiclk();

  init_gpio();

  init_uart3();

  while (1)

  {

  if(UART3_ReceiveData8()==0xAA) //发送0xAA,则灯闪发0xBB

  {

  UART3_SendData8(0xBB);

  GPIO_WriteReverse(GPIOD,GPIO_PIN_2);

  delay(1000);

  }

  }

  }

  附:LIN简介

  LIN协会创建于1998年末,初的发起人为五家汽车制造商,一家软件工具制造商以及一家半导体厂商。该协会将主要目的集中在定义一套开放的标准,该标准主要针对车辆中低成本的内部互联网络(LIN, local interconnect networks),这些地方无论是带宽还是复杂性都不必要用到CAN网络。LIN标准包括了传输协议的定义、传输媒质、开发工具间的接口、以及和软件应用程序间的接口。LIN提升了系统结构的灵活性,并且无论从硬件还是软件角度而言,都为网络中的节点提供了相互操作性,并可预见获得更好的EMC(电磁兼容)特性。

  LIN补充了当前的车辆内部多重网络,并且为实现车内网络的分级提供了条件,这可以有助于车辆获得更好的性能并降低成本。LIN协议致力于满足分布式系统中快速增长的对软件的复杂性、可实现性、可维护性所提出的要求,它将通过提供一系列高度自动化的工具链来满足这一要求。

  LIN总线的主要特性为:

  *单主站以及多从站概念;

  *基于常用的UART/SCI硬件接口,以及相应的软件,或作为纯粹的状态机,从而保证较低的成本;

  *从节点中无须石英或陶瓷振荡器就可以实现自同步;

  *信号传输实体确定,在增强系统中可以计算信号的传播(propagation)时间;

  *信号基于应用交互层。

  LIN网络由一个主节点以及一个或多个从节点组成,媒体访问由主节点控制--从节点中不必有仲裁或冲突管理。可以保证差状态下的信号传输延迟时间。

  LIN物理层

  总线驱动/接收器的定义遵循ISO 9141单线标准,并带有一些增强性能。总线为单线传输,"与"总线通过终端电阻由电池正极节点(VBAT)提供。总线收发器采用增强型的ISO 9141实现标准。总线可以取两个互补的逻辑值:主控值其电压接近于接地端,代表逻辑值"0",退让值其电压与电池电压接近,代表逻辑值"1"。

  总线采用上拉电阻作为终端,主节点的上拉电阻为1kOhm,从节点的上拉电阻为30kOhm。电阻需串联一个二极管以防止由于本地电源泄漏对总线产生的干扰。从节点的终端电容通常值为 CSlave= 220pF,主节点的电容要更高以使整个总线的电容小于从节点的值。

  由于采用单线媒质传输,的传输波特率被限定在20kbit/s以内。该值为从满足信号同步而不产生冲突的值,到为满足电磁兼容性要求而要达到的传输值之间的实验中间值。的传输波特率为1kbit/s--这有助于避免在实际中产生超时冲突。

  LIN协议

  通过LIN总线传输的实体为帧。一个报文帧由帧头以及回应(数据)部分组成。在一个激活的LIN 网络中,通讯通常由主节点启动,主节点任务发送包含有同步间隙的报文头,同步字节以及报文标志符(ID)。一个从节点的任务通过接收并过滤标志符被激活,并启动回应报文的传送。回应中包含了1到8个字节的数据以及一个字节的校验码。

  传输一帧所花费的总的时间是发送每个字节所用的时间,加上从节点的回应间隙,再加上传输每个字节的间隙时间(inter-byte space)。字节间隙是指发送完前一个字节的停止位后到发送下一个字节的启动位之间的时间。

  帧内部间隔(inter-frame space)是从上一帧发送完毕后到下一帧启动发送间的时间间隔。

  帧的结构如图1所示。帧由帧间间隔以及接下来的4到11个字节域组成。

  图1:帧结构

  信号在帧的数据域中传送。多个信号可以打包在一个帧中传送,只要这些信号不彼此重叠即可。

  每个信号只有一个明确的传输者,例如,通常由一簇(cluster)节点中的一个来写,0、1或多个节点订阅该信号。

  LIN协议的特性是使用进度表(schedule table)。进度表有助于保证总线不出现过载的情况,他们同样是保证信号定期传输的组件。

  在一组LIN节点中只有主节点任务才可以启动通讯保证了行为的确定性。主节点有责任保证与操作模式相关的所有帧都必须分配了足够长的传输时间。

  LIN应用

  采用LIN可实现车内网络分级,从而成为车辆制造商提供更高的质量及更低成本的重要因素。它可以为工业领域的软件开发提供的实现方式:抽象及更好的组合能力。LIN可以简化很多现有的低端复合解决方案,并且可以降低车辆电子系统的开发、生产、服务及后勤成本。

  采用配备LIN的轿车生产线正在快速增长,而下一代轿车雄心勃勃的计划也许是LIN成功的证明。简捷而完整的LIN规范包含了完整的网络概念,极高的自动化程度已经使LIN和CAN成为了车内通讯网络的主干。一部分市场增长甚至出现在车内网络部分减少的地方。

  2003年发布的LIN 2.0规范增强了组件在不同车辆生产厂商间的通用性,并且通过引入节点能力描述文件(Node Capability Description File)增强了自动化设计能力,同时还对同一网络中的相同LIN设备定义了重配置机制。


关键词:STM8UART

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

广告
上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!