匿名
未登录
登录
丢石头百科
搜索
查看“STM8 LIN主模式”的源代码
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
STM8 LIN主模式
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
<table border="0" cellpadding="0" cellspacing="0" style="color: rgb(72, 61, 139); font-family: Arial, 新宋体, 微软雅黑; font-size: 12px;" width="780"><tbody><tr><th class="type_483D8B" scope="col" style="line-height: 20px; font-weight: normal; border-top-style: none;" valign="top"> STM8 LIN模式功能描述 在LIN模式下,LIN标准要求的数据格式是8位数据位加1位停止位。 完成这样的设置需要将UART_CR1的M位清0,同时把UART_CR3的STOP[1:0]位也清0。 主模式 UART初始化 步骤: 1.设置UART_BRR2和UART_BRR1来选择期望的波特率。 2.将UART_CR3的LINEN位置1来使能LIN模式。 3.将UART_CR2的TEN位和REN位置1来使能发送器和接收器。 LIN报文头(header)的发送 按照LIN协议,所有在LIN总线上的通讯都由主设备通过发送报文头(header)发起,报文头之后是响应。报文头由主任务(主节点)发送,而数据由节点(主节点或者从节点)的从任务发送。 不带错误侦测的步骤: 1.将UART_CR2的SBK位置1来请求发送断开符+分界符。 2.对UART_DR写入0x55来请求发送同步域。 3.等待UART_SR的标志位TC为1。 4.对UART_DR写入被保护识别符值来请求发送识别符域。 5.等待UART_SR的标志位TC为1。 带错误侦测的步骤: 1.将UART_CR2的SBK位置1来请求发送断开符+分界符。 2.等待UART_CR4的标志位LBDF为1。 3.对UART_DR写入0x55来请求发送同步域。 4.等待UART_SR的标志位RXNE为1,并读回UART_DR。 5.对UART_DR写入被保护识别符值来请求发送识别符域。 6.等待UART_SR的标志位RXNE为1,并读回UART_DR。 只有在UART_RX管脚上接收回有效的断开符和分界符以后,标志位LBDF才会置1。 LIN断开符和分界符侦测 当STM8的LIN模式被使能时,断开符号检测电路被激活。该检测完全独立于USART接收器。断开符只要一出现就能检测到,不管是在总线空闲时还是在发送某数据帧期间。 当接收器被激活时(USART_CR1的REN=1),电路监测RX上的起始信号。监测起始位的方法同检测断开符号或数据是一样的。当起始位被检测到后,电路对每个接下来位的第8,9,10个过采样时钟点上进行采样。如果10个(当USART_CR4的LBDL=0)或11个(当USART_CR4的LBDL=1)连续位都是'0',并且又跟着一个分界符,USART_SR的LBD标志被置1。如果LBDIEN位=1,会有中断产生。 如果在第10或11个采样点之前采样到了'1',检测电路取消当前检测并重新寻找起始位。如果LIN模式被禁止(LINEN=0),接收器继续如正常USART那样工作,不需要考虑检测断开符。 如果LIN模式被激活(LINEN=1),只要一发生帧错误(例如在发送断开帧时,停止位检测到'0'),接收器就停止,直到断开符号检测电路接收到一个'1'(这种情况发生于断开符没有完整的发出来),或一个定界符(这种情况发生于已经检测到一个完整的断开符号)。 图116说明了断开符检测器状态机的行为和断开符号标志的关系。 LBDF标志用于主模式,LHDF标志用于从模式。 图117给了一个断开帧的例子。 [[File:STM8_P289_1.jpg]] (图116:STM8_LIN模式下的断开符检测(11位断开长度–设置了LBDL位)) [[File:STM8_P289_2.jpg]] (图117:STM8_LIN模式下的断开符检测与帧错误的检测) 响应发送(主设备是响应的发布方) 响应由符合UART规范的字节组成:8位数据位,1位停止位,无校验位。 要发送n字节的数据,应当按顺序重复n次以下步骤:<li>对UART_DR寄存器写入数据 </li><li>等待UART_SR寄存器的标志位RXNE为1 </li>* 读UART_DR寄存器,检查读回值 响应接收(主设备是响应的签署方) 要接收n字节的数据,应当按顺序重复n次以下步骤:* 等待UART_SR寄存器的标志位RXNE为1* 读UART_DR寄存器 (响应忽略从设备对从设备通讯) STM8在从设备与从设备的通讯,并且主设备不需要检查响应中错误的情况下,应用程序可以直到下一帧传输前都不必检查标志位RXNE。在下一次断开符发送之前,应当清除标志位RXNE和OR。 注意:接收回一个断开符也会在设置标志位LBDF前设置标志位RXNE和FE。因此,如果使用RX中断,最好在发送断开符之前关闭中断,来避免一次额外的中断。在从设备对从设备通讯的情况下,一旦报文头被发出,就可以清0标志位RIEN。</th></tr></tbody></table>
返回至
STM8 LIN主模式
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志