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初始化函数就可以了,然后就直接调用读写函数进行读写!

未完~关注我的cc2541分类

时间: 2024-10-07 15:47:11

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

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

本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 中级教程-OSAL操作系统(OSAL系统解基本套路) 中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~ 中级教程-OSAL操作系统(ADC-光敏电阻) OSAL操作系统-实验16 串口波特率扩展 OSAL操作系统-实验1

5、CC2541芯片中级教程-OSAL操作系统(PWM+看门狗)

本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 中级教程-OSAL操作系统(OSAL系统解基本套路) 中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~ 中级教程-OSAL操作系统(ADC-光敏电阻) OSAL操作系统-实验16 串口波特率扩展 OSAL操作系统-实验1

3、CC2541芯片中级教程-OSAL操作系统(ADC光敏电阻和修改串口波特率)

本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 中级教程-OSAL操作系统(OSAL系统解基本套路) 中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~ 中级教程-OSAL操作系统(ADC-光敏电阻) OSAL操作系统-实验16 串口波特率扩展 OSAL操作系统-实验1

1、CC2541蓝牙4.0芯片中级教程——基于OSAL操作系统的运行流程了解+定时器和串口例程了解

本文根据一周CC2541笔记汇总得来—— 适合概览和知识快速索引—— 全部链接: 中级教程-OSAL操作系统\OSAL操作系统-实验01 OSAL初探 [插入]SourceInsight-工程建立方法 中级教程-OSAL操作系统(OSAL系统解基本套路) 中级教程-OSAL操作系统(进一步了解-OLED && 普通按键和5方向按键-中断!!!)这个系统驱动层和应用层不一样~ 中级教程-OSAL操作系统(ADC-光敏电阻) OSAL操作系统-实验16 串口波特率扩展 OSAL操作系统-实验1

Android进阶中级教程——1.1 Git的本地使用详解

Android进阶中级教程--1.1 Git的本地使用详解 标签(空格分隔): Android进阶 1.引言 在之前的Android基础入门系列我们就讲解过Git的简单使用了,进阶系列我们 系统地对Git进行讲解,基本命令的使用:工作区,暂存区,历史仓库,远程仓库的概念, 团队协作中的分支管理,Android Studio中使用Git等:Git是一个快速的分布式的版本 控制系统,和其他的版本控制系统的差别在于Git直接记录快照,而不是差异比较! 差异比较的版本控制系统只关心文件内容的具体差异,然

Android中级教程之----Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)

在Android群里,经常会有人问我,Android Log是怎么用的,今天我就把从网上以及SDK里东拼西凑过来,让大家先一睹为快,希望对大家入门Android Log有一定的帮助. android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() .根据首字母对应VERBOSE,DEBUG,INFO, WARN,ERROR. 1.Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时

简单shell指令

第一部分 简单的常用指令 1.date命令 date 2.显示日历 cal 3.显示当前目录 pwd  4.切换当前工作目录 默认情况下,超级用户的主目录是/root,而普通用户的主目录是/home下与该用户同的子目录. 超级用户,也就是root用户的显示符号为:# 而普通用户的显示符号为:$ 5.查看文件信息 ls -a 显示所有的文件和子目录,包括隐藏的文件和隐藏子目录,Linux中隐藏文件夹和隐藏子目录都是以“ . ”来开始的. -R 不仅显示指定目录下的文件和子信息目录,而且还递归的显示

自己动手写CPU之第七阶段(2)——简单算术操作指令实现过程

将陆续上传本人写的新书<自己动手写CPU>,今天是第25篇,我尽量每周四篇 亚马逊的预售地址如下,欢迎大家围观呵! http://www.amazon.cn/dp/b00mqkrlg8/ref=cm_sw_r_si_dp_5kq8tb1gyhja4 China-pub的预售地址如下: http://product.china-pub.com/3804025 7.2 简单算术操作指令实现思路 虽然简单算术操作指令的数目比较多,有15条,但实现方式都是相似的,与前几章逻辑.移位操作指令的实现方式也

[MFC] 梳理一个简单的图片处理桌面软件中用到的MFC控件技巧

 前言 前些天应好友之拖,帮忙设计一个简单的图像处理的小软件.朋友把核心算法封装好了,但是是用openCV类似于console的编程环境,要我在此基础上改成MFC桌面程序.下图是做成之后的效果: 我是两年前稍微学了点MFC的知识,这两年中基本没有涉及,因为诸多相同的需求都可以用C#来搞定.这个本来也是想用C#来弄,可是我朋友用了openCV的相关函数封装了核心的“美颜算法”,我就只好重温经典了! 本文只涉及开发该小软件中与MFC控件相关的操作技巧,不提供朋友的“美颜算法”,还请各位见谅! 工程中