S32K148-uart
不好意思,上个星期因为项目和个人原因,落下一次博客分享。最近一直在搞上位机,之前用的CAN通讯做的上位机,现在因为项目原因换成modbus-rtu,所以就跟大家说说关于modbus协议中用到的uart口。
uart学名通用异步收发器
硬件不做阐述
软件通信协议重点关注几个方面:空闲位,起始位,数据位,奇偶校验位,停止位,波特率
S32K148配置过程
1)引脚配置,注意uart模块使能(专家系统自动给外设时钟使能)

2)uart配置


初始化代码:
uint8_t UART0_bufferIdx;
uint32_t UART0_bytesRemaining;
uint8_t UART0_ReceiveBuffer[200];
void UART0_init(void)
{
LPUART_DRV_Init(INST_LPUART1, &lpuart1_State, &lpuart1_InitConfig0);
LPUART_DRV_InstallRxCallback(INST_LPUART1, UART0_Callback, (void *)0);
LPUART_DRV_ReceiveData(INST_LPUART1, UART0_ReceiveBuffer, 1);
}
uart回调函数
void UART0_Callback(void *driverState, uart_event_t event, void *userData)
{
(void) driverState;
(void) userData; status_t state;
state = LPUART_DRV_GetReceiveStatus(INST_LPUART1, &UART0_bytesRemaining);
/*等待传输完成*/
// while(state == STATUS_BUSY); if (state != STATUS_BUSY)
if(state == STATUS_SUCCESS)
{ /*字符串附加终止符*/
UART0_bufferIdx++;
UART0_ReceiveBuffer[UART0_bufferIdx] = 0U;
//接收缓存数据复制到Databuffer
//memcpy(Databuffer,ReceiveBuffer,bufferIdx); UART0_bufferIdx = 0;
/*重新接收数据*/
LPUART_DRV_ReceiveData(INST_LPUART1, UART0_ReceiveBuffer, 1);
}
else
{
//可做其他逻辑判断 }
/*接收缓存FULL*/
if (event == UART_EVENT_RX_FULL)
{
if ((UART0_ReceiveBuffer[UART0_bufferIdx] != '\n') && (UART0_bufferIdx != (BUFFER_SIZE - 2U)))
{
/*每接收一字节数据,就将储存位置指向数组的下一位,直到接收到换行符 */
UART0_bufferIdx++;
LPUART_DRV_SetRxBuffer(INST_LPUART1, &UART0_ReceiveBuffer[UART0_bufferIdx], 1U); }
}
}
S32K148-uart的更多相关文章
- [Intel Edison开发板] 05、Edison开发基于MRAA实现IO控制,特别是UART通信
一.前言 下面是本系列文章的前几篇: [Intel Edison开发板] 01.Edison开发板性能简述 [Intel Edison开发板] 02.Edison开发板入门 [Intel Edison ...
- z-stack协议uart分析(DMA)
1.从ZMain里面的main函数开始分析 2.进入int main( void ); HalDriverInit(); //硬件相关初始化,有DMA初始化和UART初始化 3.进入HalDriv ...
- Win10 IoT C#开发 4 - UART 串口通信
Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,既可以开发设备UI与用户交互式操作,又可以控制GPIO等接口,使得原来嵌入式繁琐的开发变得简单.通过Remote Debug ...
- (三) UART 串口通讯
UART : university asynchronous receiver and transmitter UART // 通用异步接收器和发送器 为什么要有串口:因为许多嵌入式设备没有显示屏 ...
- I2S/PCM/IOM-2、I2C/SPI/UART/GPIO/slimbus
概述 I2S,PCM,IOM-2都是数字音频接口,传数据的. I2C,SPI,UART,GPIO是控制接口,传控制信令的. I2S I2S(Inter-IC Sound Bus)是飞利浦公司为数字音频 ...
- 什么是UART中的FIFO
FIFO是先进先出缓冲区的意思,即串口接收到的数据可以先进入FIFO,不必马上进入中断服务程序接收,这样可以节省CPU时间.对于发送数据也一样可以把要发送的数据一起写入FIFO,串口控制器按照写入的顺 ...
- Uart、SPI和I2C的区别
串口通信:UART.SPI.I2C区别[引用] 1.UART就是两线,一根发送一根接收,可以全双工通信,线数也比较少.数据是异步传输的,对双方的时序要求比较严格,通信速度也不是很快.在多机通信上面 ...
- Raspberry Pi UART with PySerial
参考:http://programmingadvent.blogspot.hk/2012/12/raspberry-pi-uart-with-pyserial.html Raspberry Pi UA ...
- Raspberry Pi Resources-Using the UART
参考:RPi Serial Connection 本文来自:http://www.raspberry-projects.com/pi/programming-in-c/uart-serial-port ...
- Linux学习 : 裸板调试 之 配置UART
1.UART原理说明 发送数据时,CPU将并行数据写入UART,UART按照一定的格式在一根电线上串行发出:接收数据时,UART检测另一根电线上的信号,串行收集然后放在缓冲区中,CPU即可读取UART ...
随机推荐
- python简单的time ticker
在某些时候,我们需要精确的启动一个func,如果用time.sleep简单的轮询,会因为执行的任务阻塞,或者其他原因导致无法精确的定时执行. 例如在采集某些数据的时候,需要精确的每60秒采集一次,如果 ...
- RPC的通信流程
核心原理:能否画张图解释下RPC的通信流程? RPC的全称是Remote Procedure Call,即远程过程调用.RPC帮助我们屏蔽网络编程细节,实现调用远程方法跟调用本地(同一个项目中的方法) ...
- Python内置库itertools简单学习
该库为满足特定需要的比较高效的迭代器内置库,在数据科学中的应用也不少,故有必要了解一下: import itertools import sys 无限迭代器(Infinite iterators) I ...
- JAVAFx将后台报错信息导出到前台,方便用户联系技术人员
Alert alert = new Alert(Alert.AlertType.ERROR);alert.setTitle("错误");alert.setHeaderText(&q ...
- 打开host有感
一年前的呼喊,消失在了文化课的彼端,没有回音: 直至今日打开host,才发觉那时悔恨与泪水的珍贵. [此时此刻的光辉,盼君勿忘]也得加上过去式了啊--
- 【2020.11.30提高组模拟】柱形图(histogram) 题解翻译
[2020.11.30提高组模拟]柱形图(histogram) 题解 题意简述 有\(n\)个长方体并排这样放着,每种颜色的长方体的宽度都为\(1\),高\(a_i\)长\(b_i\). 求在这些长方 ...
- Scrum Master,这九个问题你问了吗?
从团队技术负责人到Scrum Master或PO,我们需要从做决策转为提问题. 一.2个关于估算的问题 团队在进行项目前需要进行粗略估算,但这并不是要求团队成员一定按照估算出的结果进行. 问题一:估算 ...
- Python字符串进化史:从青涩到成熟的蜕变
Python字符串进化史:从青涩到成熟的蜕变 Python 2.x 的字符串世界 在 Python 2.x 的时代,字符串处理已经是编程中的基础操作,但与现在相比,有着不少差异.在 Python 2. ...
- 高效安全迁移:PG高可用集群实战方案深度解析
PostgreSQL是一个开源的数据库管理系统,相比于其他开源数据库系统,PostgreSQL有更加丰富的数据类型和可扩展性,并因此被广泛采用.在实际工作中,若企业业务需求变动,则有可能面临PG高可用 ...
- 揭秘 ChunJun:如何实现 e2e&session 日志隔离
本文将从 e2e 的基本介绍,e2e 的使用与扩展,session 日志隔离三个维度为大家带来 ChunJun e2e & session 日志隔离的分享. 大量具体代码和演示请看视频教程️ ...