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,如需转载请自行联系原作者

相关文章
|
6月前
|
Ubuntu 开发工具
Ubuntu 22.04 aarch64版本操作系统下编译ZLMediaKit教程
通过上述步骤,你可以在Ubuntu 22.04 aarch64版本上成功编译ZLMediaKit,这是一个相对简单而直接的过程,但可能会遇到一些需要根据具体系统环境和要求调整的地方。
857 0
|
7月前
|
监控 Linux 开发者
理解Linux操作系统内核中物理设备驱动(phy driver)的功能。
综合来看,物理设备驱动在Linux系统中的作用是至关重要的,它通过与硬件设备的紧密配合,为上层应用提供稳定可靠的通信基础设施。开发一款优秀的物理设备驱动需要开发者具备深厚的硬件知识、熟练的编程技能以及对Linux内核架构的深入理解,以确保驱动程序能在不同的硬件平台和网络条件下都能提供最优的性能。
391 0
|
存储 弹性计算 运维
阿里云国际Windows操作系统迁移教程
阿里云国际Windows操作系统迁移教程
|
10月前
|
网络协议 Linux 网络安全
Palo Alto PAN-OS 11.2.5 for KVM - ML 驱动的 NGFW
Palo Alto PAN-OS 11.2.5 for KVM - ML 驱动的 NGFW
386 10
Palo Alto PAN-OS 11.2.5 for KVM - ML 驱动的 NGFW
|
10月前
|
Python
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
457 14
|
11月前
|
监控 关系型数据库 MySQL
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
838 30
|
12月前
|
Web App开发 安全 Linux
【独家揭秘2025】VMware Workstation Pro虚拟机:免费安装教程大放送,一键解锁操作系统模拟神器!
VMware Workstation Pro 是由威睿(VMware)公司开发的一款功能强大的桌面虚拟化软件,允许用户在同一台物理计算机上同时运行多个操作系统,如Windows、..
1254 2
【独家揭秘2025】VMware Workstation Pro虚拟机:免费安装教程大放送,一键解锁操作系统模拟神器!
|
人工智能 运维 安全
操作系统控制台体验评测:AI驱动的运维新体验
作为一名开发工程师,我体验了阿里云的操作系统服务套件,选择CentOS作为测试环境。安装SysOM和OS Copilot组件非常顺利,系统健康检查、诊断功能精准高效,OS Copilot智能解答操作系统问题,节省大量时间。订阅管理确保系统安全更新,整体提升运维效率约30%。建议增加更多诊断功能和培训资源。总结:AI驱动的运维新体验,极大提高工作效率和系统稳定性。[访问控制台](https://alinux.console.aliyun.com/)。
333 0
|
弹性计算 开发框架 .NET
阿里云服务器购买教程及云服务器地域、实例、操作系统、带宽等参数选择指南
对于初次购买阿里云服务器的用户来说,想使用阿里云服务器搭建网站或者运行APP、小程序等项目,第一步就是要先购买阿里云服务器,下面小编以图文形式给大家介绍一下阿里云服务器的购买流程,以及购买过程中如何云服务器地域、实例、带宽等关键配置和选择这些参数的一些注意事项,以供参考。
|
应用服务中间件 Linux nginx
Mac os 安装 nginx 教程(success)
这篇文章是关于如何在Mac OS系统上使用Homebrew安装nginx及其依赖,并解决安装过程中可能出现的权限问题。
1999 0
Mac os 安装 nginx 教程(success)

热门文章

最新文章

推荐镜像

更多