4、CC2541芯片中级教程-OSAL操作系统(简单AT指令实现+IIC软件和硬件实现驱动MPU6050)

简介:


 

 

本文根据一周CC2541笔记汇总得来——

适合概览和知识快速索引——

全部链接:

中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探

【插入】SourceInsight-工程建立方法

中级教程-OSAL操作系统(OSAL系统解基本套路)

中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~

中级教程-OSAL操作系统(ADC-光敏电阻)

OSAL操作系统-实验16 串口波特率扩展

OSAL操作系统-实验17 AT命令初步

OSAL操作系统-实验20 模拟IIC通信+硬件IIC(Mpu6050)

OSAL 操作系统-实验 23 PWM 输出(改变占空比)

OSAL 操作系统-实验 24 看门狗 WachDog

OSAL操作系统-实验25 SNV内部Flash数据读写

OSAL 操作系统-实验 29 系统睡眠等级研究

OSAL 操作系统-实验 31 从机广播功率修改

 

 

一、AT命令初步(17)

AT 命令式通过串口来通信的

串口一有数据就会调用回调函数,为了防止回调函数被频繁调用,采用(延时+数据长度控制,即:超出某一时间或者超出某一长度就调用 NPI_ReadTransport(buffer,numBytes); 读取一定数据)

 

第224行将串口收到的数据调用AT指令处理函数进行处理: 

复制代码
 1 // AT 命令处理 函数
 2 bool simpleBLE_AT_CMD_Handle(uint8 * pBuffer, uint16 length)
 3 {
 4     bool ret = TRUE;
 5     char strTemp[64];
 6 
 7     // 1、测试
 8     if((length == 4) && str_cmp(pBuffer, "AT\r\n", 4))//AT
 9     {
10         sprintf(strTemp, "OK\r\n");
11         NPI_WriteTransport((uint8 * )strTemp, osal_strlen(strTemp));
12     }
13     // 2、设置LED1的亮灭
14     else if((length == 9) && str_cmp(pBuffer, "AT+LED", 6))
15     {
16         /*
17         Para: 0 ~ 1
18         AT+LED0\r\n: 关灯
19         AT+LED1\r\n: 开灯
20         Default: 0
21         */
22         switch(pBuffer[6])
23         {
24         case '?':
25             sprintf(strTemp, "OK+Get:%d\r\n", g_LED1);
26             NPI_WriteTransport((uint8 * )strTemp, osal_strlen(strTemp));
27             break;
28         case '0':
29             g_LED1 = 0;
30             HalLedSet(HAL_LED_1, HAL_LED_MODE_OFF);      // 关闭led1
31             sprintf(strTemp, "OK+Set0\r\n");
32             NPI_WriteTransport((uint8 * )strTemp, osal_strlen(strTemp));
33             break;
34         case '1':
35             g_LED1 = 1;
36             HalLedSet(HAL_LED_1, HAL_LED_MODE_ON);      // 点亮led1
37             sprintf(strTemp, "OK+Set1\r\n");
38             NPI_WriteTransport((uint8 * )strTemp, osal_strlen(strTemp));
39             break;
40         default:
41             ret = FALSE;
42             break;
43         }
44     }
45     else
46     {
47         sprintf(strTemp, "ERROR\r\n");
48         NPI_WriteTransport((uint8 * )strTemp, osal_strlen(strTemp));
49 
50         ret = FALSE;
51     }
52 
53     return ret;
54 }
复制代码

258 行, AT\r\n 为测试命令,

  业界几乎所有的 AT 命令模块第一条 AT 命令都是这一条,用于测试模块连接是否正常。

 
264~288 行,我们编写了一个用于点灯的 AT 命令:
  AT+LED?\r\n: 查询灯的开关状态
  AT+LED0\r\n: 关灯
  AT+LED1\r\n: 开灯
 
总结:整体比较简单就是将串口数据创送给AT指令处理函数处理,串口数据接收采用一定技巧
 
 
二、模拟IIC通信+硬件IIC(Mpu6050) 20

Cc2541 有硬件 iic 功能,但 cc2540 并没有硬件 iic 功能

 
Description:    This file contains code that is common to all sensor drivers.
在 Hal_sensor.c  ti 已经实现了 cc2541 得硬件 iic 驱动,我们使用就行。
 
simpleBLETest.c中,编写的对 mpu6050 的访问函数。
 
 
 
以上两个函数,实现的是对 mpu6050 的寄存器的读写操作
 
 
 
以上两个文件,实现的是 gpio 模拟 iic 的时序,并封装模拟 iic 的读写函数。
 
在Iic.h中我们定义了 P1.5 与 P1.6 作为 iic的SCL与SDA:
 
 
总结:IIC和MPU6050都封装的很好。协议栈是个好东西,方便移植!!!是个宝库!
 
上面是 IIC的模拟实现,其 硬件实现使用起来更简单:

在simpleBLETest.c直接将MPU6050的设备地址传送给I2C初始化函数就可以了,然后就直接调用读写函数



本文转自beautifulzzzz博客园博客,原文链接:http://www.cnblogs.com/zjutlitao/p/4774625.html,如需转载请自行联系原作者

相关文章
|
运维 安全 Devops
Cisco NX-OS ACI 16.1(4h)F 发布 - 适用于 ACI 模式下的 Cisco Nexus 9000 系列交换机系统软件
Cisco NX-OS ACI 16.1(4h)F 发布 - 适用于 ACI 模式下的 Cisco Nexus 9000 系列交换机系统软件
243 0
|
网络协议 Linux 网络安全
Palo Alto PAN-OS 11.2.5 for KVM - ML 驱动的 NGFW
Palo Alto PAN-OS 11.2.5 for KVM - ML 驱动的 NGFW
608 10
Palo Alto PAN-OS 11.2.5 for KVM - ML 驱动的 NGFW
|
Ubuntu 开发工具
Ubuntu 22.04 aarch64版本操作系统下编译ZLMediaKit教程
通过上述步骤,你可以在Ubuntu 22.04 aarch64版本上成功编译ZLMediaKit,这是一个相对简单而直接的过程,但可能会遇到一些需要根据具体系统环境和要求调整的地方。
1269 0
|
监控 Linux 开发者
理解Linux操作系统内核中物理设备驱动(phy driver)的功能。
综合来看,物理设备驱动在Linux系统中的作用是至关重要的,它通过与硬件设备的紧密配合,为上层应用提供稳定可靠的通信基础设施。开发一款优秀的物理设备驱动需要开发者具备深厚的硬件知识、熟练的编程技能以及对Linux内核架构的深入理解,以确保驱动程序能在不同的硬件平台和网络条件下都能提供最优的性能。
624 0
|
Python
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
623 14
|
监控 关系型数据库 MySQL
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
1190 30
|
安全 前端开发 开发工具
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
892 5
【01】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-项目开发实战-优雅草卓伊凡拟开发一个一站式家政服务平台-前期筹备-暂定取名斑马家政软件系统-本项目前端开源-服务端采用优雅草蜻蜓Z系统-搭配ruoyi框架admin后台-全过程实战项目分享-从零开发到上线
|
Web App开发 安全 Linux
【独家揭秘2025】VMware Workstation Pro虚拟机:免费安装教程大放送,一键解锁操作系统模拟神器!
VMware Workstation Pro 是由威睿(VMware)公司开发的一款功能强大的桌面虚拟化软件,允许用户在同一台物理计算机上同时运行多个操作系统,如Windows、..
2741 2
【独家揭秘2025】VMware Workstation Pro虚拟机:免费安装教程大放送,一键解锁操作系统模拟神器!
|
数据采集 人工智能 运维
深度探讨操作系统运维、软件选型等社区标准,龙蜥标准化 SIG MeetUp 圆满举办
围绕软件选型、操作系统运维、RISC-V 三个方向的社区标准进行了分享与讨论。
深度探讨操作系统运维、软件选型等社区标准,龙蜥标准化 SIG MeetUp 圆满举办
|
存储 数据采集 监控
软考软件评测师—— 操作系统综合知识
本内容主要介绍了嵌入式操作系统(EOS)的特点,包括可裁剪性、实时性、统一接口、强稳定性、弱交互性、固化代码、硬件适应性和可定制性。此外,还涉及操作系统的概念与功能,如资源管理、工作流程组织和用户接口;以及不同类型的操作系统(批处理、分时、分布式、实时)。同时通过历年真题解析,深入探讨了嵌入式操作系统可定制性的含义、多线程资源共享规则、通用操作系统基本功能及页式存储管理等关键知识点。

热门文章

最新文章

推荐镜像

更多