社区首页
技术讨论创新帖
全部新帖
资料区
社区活动
联系管理员
★ 社区积分制度
★ 新手必读
★ 申请版主★
请
登录
后使用快捷导航
没有帐号?
注册
首页
|
电子技术
|
嵌入式
模拟电子
单片机
电源管理
传感器
半导体
电子应用
|
工业控制
物联网
汽车电子
网络通信
医疗电子
手机便携
测试测量
安防电子
家用电子
机器人
新能源
电子头条
|
社区
|
论坛
测评
博客
大学堂
|
下载
|
下载中心
电路图
精品文集
电路图
|
参考设计
|
Datasheet
|
活动
|
直播
datasheet
datasheet
文章
搜索
登录
注册
中文
En
论坛
切换旧版
电子工程世界-论坛
»
论坛
›
电子技术交流
›
国产芯片交流
›
全志R128 SDK HAL 模块开发指南之 LPUART
返回列表
发新帖
回复
阅
667
|
回
0
aleksib
当前离线
纯净的硅(中级)
最后登录
2025-1-6
在线时间
40 小时
威望
998分
芯积分
511分
(兑换)
E金币
0枚
(兑换)
(兑换)
好友
0
aleksib
287
帖子
0
TA的资源
纯净的硅(中级)
+ 好友
私信
楼主
发表于2024-2-2 10:05
只看该作者
全志R128 SDK HAL 模块开发指南之 LPUART
[复制链接]
# LPUART ## 模块介绍 LPUART 驱动主要实现设备驱动的底层细节,并为上层提供一套标准的 API 接口以供使用。 ## 模块配置 配置路径如下: ``` Kernel Setup ---> Drivers Setup ---> SoC HAL Drivers ---> LPUART Devices ---> [*] enable lpuart driver ``` ## 源码结构 LPUART 模块源码结构如下所示: ```c hal/source/lpuart/ ---- 驱动源码 ├── hal_lpuart.c ├── Kconfig ├── Makefile ├── platform │ ├── lpuart-sun20iw2p1.h ---- 平台地址,引脚复用等配置 │ └── ... ├── platform-lpuart.h └── lpuart.h include/hal/ ---- 驱动APIs声明头文件 └── hal_lpuart.h ``` ## 模块接口说明 需要包含头文件 ```c #include
``` ### 初始化 LPUART 驱动 函数原型: ```c int32_t hal_lpuart_init(int32_t lpuart_port) ``` 参数: - lpuart_port:LPUART 端口号 返回值: - SUNXI_HAL_OK: 成功 - HAL_LPUART_STATUS_ERROR: 失败 ### 卸载 LPUART 驱动 函数原型: ```c int32_t hal_lpuart_deinit(int32_t lpuart_port) ``` 参数: - lpuart_port:LPUART 端口号 返回值: - SUNXI_HAL_OK: 成功 ### 设置波特率及参数 函数原型: ```c int32_t hal_lpuart_control(lpuart_port_t lpuart_port, int cmd, void *args) ``` 参数: - lpuart_port_t:LPUART 端口号 - cmd:预留,暂未使用 - args:指向 _lpuart_config_t 类型变量的数组 返回值: - SUNXI_HAL_OK: 成功 - HAL_LPUART_STATUS_ERROR: 失败 ### 接收处理 函数原型: ```c int32_t hal_lpuart_receive(int32_t dev, uint8_t *data, uint32_t num) ``` 参数: - dev:LPUART 端口号 - data: 接收数据缓冲区 - num: 接收数据长度 返回值: - size: 成功接收的字节数 ### 接收对比处理 函数原型: ```c int32_t hal_lpuart_rx_cmp(lpuart_port_t lpuart_port, uint8_t cmp_len, uint8_t *cmp_data); ``` 参数: - lpuart_port:LPUART 端口号 - cmp_len:比较数据的长度 - cmp_data:比较的数据 返回值: - SUNXI_HAL_OK: 成功 - HAL_LPUART_STATUS_ERROR: 失败 ### 启用接收对比处理回调 函数原型: ```c int32_t hal_lpuart_enable_rx_cmp(lpuart_port_t lpuart_port, lpuart_callback_t cb, void *arg); ``` 参数: - lpuart_port:LPUART 端口号 - cb:处理回调函数 - arg:回调函数的参数 返回值: - SUNXI_HAL_OK: 成功 - HAL_LPUART_STATUS_ERROR: 失败 ### 禁用接收对比处理回调 函数原型: ```c int32_t hal_lpuart_disable_rx_cmp(lpuart_port_t lpuart_port); ``` 参数: - lpuart_port:LPUART 端口号 返回值: - SUNXI_HAL_OK: 成功 - HAL_LPUART_STATUS_ERROR: 失败 ### 配置PM绕过模式 函数原型: ```c int32_t HAL_LPUART_SetBypassPmMode(lpuart_port_t lpuart_port, uint8_t mode); ``` 参数: - lpuart_port:LPUART 端口号 - mode:配置模式 返回值: - SUNXI_HAL_OK: 成功 - HAL_LPUART_STATUS_ERROR: 失败 ## 模块使用范例 ```c #include
#include
#include
#include
#include
#include
#include
#include
#include
/* find a free uart_port or pc com as source */ #define UART_TEST UART_1 #define TEST_LEN 5 static void cmd_usage(void) { printf("Usage:\n" "\t hal_lpuart
\n"); } void test_recv_data(lpuart_port_t port) { printf("enter recv data test\n"); hal_lpuart_enable_rx_data(port, NULL, NULL); /* use uart as source */ hal_uart_init(UART_TEST); hal_uart_send(UART_TEST, "a", 1); /* use pc com as source */ printf("enter\n"); hal_sleep(5); hal_lpuart_disable_rx_data(port); } static void compare_callback(void *arg) { printf("data compare success!\n"); } void test_cmp_data(lpuart_port_t port) { printf("enter cmp data test\n"); char cmp[TEST_LEN + 1] = "abcde"; if (hal_lpuart_init(port)) { printf("lpuart %d not inited\n", port); return; } hal_lpuart_rx_cmp(port, TEST_LEN, cmp); hal_lpuart_enable_rx_cmp(port, compare_callback, NULL); /* use uart as source, stop bit of uart should be 2 */ hal_uart_init(UART_TEST); hal_uart_send(UART_TEST, cmp, TEST_LEN); /* use pc com as source */ printf("enter abcde\n"); hal_sleep(5); hal_lpuart_disable_rx_cmp(port); } void lpuart_reset_multiplex() { lpuart_multiplex(LPUART_0, UART_0); lpuart_multiplex(LPUART_1, UART_1); } int cmd_test_lpuart(int argc, char **argv) { if (argc != 3) { cmd_usage(); return -1; } lpuart_port_t port; uint32_t baudrate; port = strtol(argv[1], NULL, 0); baudrate = strtol(argv[2], NULL, 0); if (hal_lpuart_init(port) != SUNXI_HAL_OK) { printf("Fail to init lpuart\n"); return -1; } if (port == 0) { lpuart_multiplex(LPUART_0, UART_TEST); } else if (port == 1) { lpuart_multiplex(LPUART_1, UART_TEST); } test_recv_data(port); test_cmp_data(port); lpuart_reset_multiplex(); return 0; } FINSH_FUNCTION_EXPORT_CMD(cmd_test_lpuart, hal_lpuart, lpuart hal APIs tests) ```
此帖出自
国产芯片交流论坛
点赞
关注
(1)
回复
分享
扫一扫,分享给好友
复制链接分享
链接复制成功,分享给好友
举报
提升卡
变色卡
千斤顶
返回列表
发新帖
回复
您需要登录后才可以回帖
登录
|
注册
发表回复
回帖后跳转到最后一页
活动
更多>>
有奖直播 | ADI 超低功耗 MCU MAX326xx 系列介绍
走近 AI 重磅新品 STM32N6,解锁在 MCU 部署高性能、节能型边缘 AI!答题有好礼~还有开发板等你拿!
Microchip 直播|多相降压电源控制技术的发展与探讨 报名中!
安世半导体智能工业应用探索站,闯关赢好礼!
24年年终盘点来啦!精选强推:原创、测评、拆解、视频、资料
PI 电源小课堂:集成式半桥驱动IC BridgeSwitch 2, 助力高效永磁同步电机逆变器的设计
Microchip喊你探索dsPIC33A 芯片,70份好礼等你赢!
【瓜分2500元红包】票选2024 DigiKey “感知万物,乐享生活”创意大赛人气作品TOP3!
开源项目
更多>>
基于 TPS61202DRCT 同步升压转换器的 EVIX-USB、SolarBIT 评估板
LTC3406AB-2 的典型应用 - ThinSOT 中的 2.25MHz、600mA 同步降压稳压器
ESP32-S开发板
PY32F003x8最小系统板
使用 Infineon Technologies AG 的 IRU1260CT 的参考设计
4通道音频选择板
LTC7149IUFD 12V 输入至 -12V 输出、1MHz 降压稳压器的典型应用电路
适用于工业应用的 C8051F524A MCU 的 C8051F530ADK、8051 开发系统
VNH7100BAS评估板
EVAL-RS485FDEBZ,用于 ADM3073E 全双工 RS-485 收发器的评估板,采用 14 引脚 SOIC 封装
随便看看
【泰坦触觉 TITAN Core开发套件】2、资料整合
本次对马达和控制板分别提供了2个文件,我们可以在其中找到我们需要的一些产品信息和控制模式信息等,接下来我们一起看看泰坦触觉的马达和TITANCore开发板。一、振动马达本次提供马达是一种宽频振动马达,采用了线性磁力冲击专利技术的一款产品,具有一流的性 ...
【Tang Primer 25K 测评】1、硬件开箱
【新年花灯】STM32 F030 点亮WS2812流水灯
IAR编译时候遇到问题
在WinCE下,基于微软的框架开发摄像头,怎么让它连接电脑,变成摄像头使用
关于FLASH_SetLatency();的疑问
一款被完全误解的器件?
调查一下,大家做GPRS数据传输的方法。用GPRS模块自带的协议栈,还是移植一个TCP/IP协议栈
查找数据手册?
搜索
EEWorld Datasheet 技术支持
热门标签
源代码
单片机
放大器
TI
ST
电源
分立器件
传感器
测试测量
模拟
模拟电子技术基础第五版电子书
智能温度变送器
电源滤波器
超级电容器
饱和失真
电磁转矩
变流器
译码器
电子纸
Rockbox
相关文章
更多>>
德州仪器 2024年Q4财报解析:中国市场增长亮眼,目前没有收到反垄断调查通知
在 2024 年第四季度收益电话会议上,德州仪器(TI)向外界展示了一些好消息,尤其是凸显了中国市场在其全球布局中的关键地位。 第四季度,TI 收入为 40 亿美元,环比下降 3%,比去年同期下
欧盟提议成立高级研究机构:专注于AI等战略技术以加强竞争力
据彭博社报道,欧盟将提议仿照美国政府实体建立一个高级研究项目机构,对战略技术进行投资,以此作为提高欧盟竞争力的更广泛努力的一部分。 欧盟还将呼吁为 AI 建设新的超级计算基础设施。知情人士及文件显示
传台积电报废三万片晶圆,三万片受损
晶圆代工龙头厂台积电位于南科的晶圆厂,受地震影响的机台设备移位、晶圆破损经过抢修后,供应链传出,3、 5纳米的先进制程晶圆十八厂,预计将于23日达100%复机,准备恢复正常生产,晶圆十四厂复机还没有
中国芯片出口连续14个月增长
特朗普退出巴黎协定,芯片业碳中和完了没?
汇顶科技 2024 年业绩亮眼,展现强劲发展韧性
谷歌母公司:美国AI难保证对华领先 不少方面是落后
消息称三星电子砍半晶圆代工部门 2025 年设备投资预算,陡降至 5 万亿韩元
史上最佳表现:SK 海力士 2024 年营业利润 23.5 万亿韩元
宇树发布“踢足球”机器人G1-Comp,网友:国足有救了
新帖速递
STM32和无源蜂鸣器播放声音的问题
车规级AECQ200介绍,混合铝电解电容器的选择
嵌入式教程_DSP技术_DSP实验箱操作教程:2-28 搭建轻量级WEB服务器实验
OPA847IDBVR运放器国产替代
AG32VF407测试UART
【得捷电子Follow Me第二期】第一章 收到货物的分享
请问这个红外接收头是什么型号?能用哪个型号代替?谢谢
出售全新未拆封ZYNQ 7Z020 FPGA核心板
用在锂电池供电的水表设置上的LORA模块,当有100块水表集中安装在一个楼道内时,节能
请问一下,当某个端口被设置为 RX0后,这个端口的输入输出方向还有必要设置吗
今年怎么这么难,比疫情时还难,三十了面临失业好迷茫
请教稳压管测试问题
【小华HC32F448测评】关于小华半导体的UART中断发送和PRINTF构造和重定向
【BIGTREETECH PI开发板】 HDMI输出测试
【BIGTREETECH PI开发板】+08.音频测试(zmj)
开发板申请:拥有 AI 加持的 STM32N6570-DK 免费试用 !
申请时间:即日起-3月2日
查看 »
安世半导体智能工业应用探索站,闯关赢好礼!
点击页面内“开始探索”按钮,填写并提交表单;
请根据序号依次完成3个安世半导体智能工业应用的探索,并根据给出的资料完成共计9题(每个应用3题),答对5题以上的玩家即可获得抽奖资格;
每人仅有一次参与答题的机会,请慎重作答,活动结束后,我们将抽取30位玩家赠送礼品。
查看 »
Microchip 直播|多相降压电源控制技术的发展与探讨 报名中!
直播主题:多相降压电源控制技术的发展与探讨
直播时间:2025年2月25日(星期二)上午10:30-11:30
快来报名!
查看 »
回帖赢好礼 | 关于无线技术的那些事儿
【活动时间】即日起—2025年1月31日
【活动好礼】50元京东卡
查看 »
答题赢好礼,PI电源小课堂第3期来啦!
本期内容:集成式半桥驱动IC BridgeSwitch 2, 助力高效永磁同步电机逆变器的设计
活动时间:即日起-2月28日
看视频答题即可赢取京东卡!
查看 »
DigiKey应用探索站重磅上线!潮流应用,硬核技术探秘,N多干货,一站get!
当月好物、热门技术资源、潮流应用技术、特色活动、DigiKey在线实用工具,干货多多~
查看 »
本周精选下载推荐:电源管理基础Dummies
本周小编给大家带来一本超简单、超干货的电子书——《电源管理基础Dummies》!内容深入浅出,排版舒服简洁,分分钟能get到电源管理最核心的知识内容。
查看 »
关闭
站长推荐
1
/7
电子工程世界版权所有
京B2-20211791
京ICP备10001474号-1
电信业务审批[2006]字第258号函
京公网安备 11010802033920号
Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复
返回顶部
返回列表
论坛首页
版块列表
专业技术中心
TI技术论坛
ST传感器与低功耗无线技术论坛
ADI参考电路
DigiKey得捷技术专区
ADI · 世健工业技术
电子技术交流
边缘AI
嵌入式系统
单片机
国产芯片交流
电机控制
FPGA/CPLD
模拟电子
电源技术
无线连接
传感器
PCB设计
综合技术交流
下载中心专版
大学堂专版
测评中心专版
行业应用
汽车电子
机器人开发
工业自动化与控制
能源基础设施
医疗电子
消费电子
创意与实践
电子竞赛
DIY/开源硬件专区
淘e淘
创意市集
休息一下
聊聊、笑笑、闹闹
工作这点儿事
为我们提意见&公告
EEWorld颁奖专区
信息发布
最新帖子
最新帖子
最新回复
精华
消灭零回复
测评中心
活动中心
积分兑换
E金币兑换
芯积分
厂商专区
TI技术论坛
ST传感器与低功耗无线技术论坛