首页 > 产品 > 无线连接 > CC2650开发套件详解 >

蓝牙产品

最新课程

热门课程

CC2650之射频(上)

大家好 今天呢我们来一起看看 TI CC2650 这个芯片 它的射频相关的一些内容 我们按照这个次序 来对今天的这个视频进行讲解 首先我们来看一看 RF 内核的一些情况 然后来看一看硬件抽象层的一些情况 最后后面是协议相关的一些情况 最后我们用 contiki 的示例 来结束本次视频 CC2650 它里面集成有一颗 Cortex-M0 控制的 2.4G 射频收发控制器 这颗控制器 可以支持低功耗蓝牙 BLE IEEE 802.15.4 和专用协议这三种应用 radio 子系统接口 通过接受命令的形式 在 MCU 和 Radio 之间进行消息的传递 消息可以包括命令状态数据事件等等 我们这里所关注的 802.15.4 呢 就是 ZigBee 和 6loWPAN 的底层物理标准 这个射频子系统呢 由 Cortex-M0 控制器 调制器频率综合器 RF接口 内外的一些总线桥 外部的射频驱动 内部的专用 SRAM 还有一些片上的一些驱动库 还有它的安全系统 接口 这些所构成 我们可以看看它的一个整体的框图 这边呢就是我们的系统 MCU 包括它的 Flash 系统的 RAM 还有它的安全接口 我们是挂载在一个总线上面 这个总线呢 通过我们的总线桥 可以跟 RF core 这里面进行一些相关的操作 这个 RF core 呢 里面包括一个 Cortex-M0 包括一些频率相关的一些组件 包括一个外部的 radio 的这样一个接口 在系统的 MCU 呢这一部分系统的 MCU 我们是可以运行 flash 中的代码 也可以在他的boot rom 里面去运行 driverlib 的一些代码 我们也可以运行用户层的一些应用 这个 MCU 呢它还要运行无线的一些协议栈 包括 ZigBee 的协议栈 6loWPAN 协议栈等等 比如说 BLE 低功耗蓝牙的协议栈等等 我们还需要在系统 MCU 里面呢 保持各种协议栈和应用的一些配置 并且处理一些协议栈中上层 MAC 的一些特性 系统 MCU 就是在这一头 系统的 RAM 20KB 的这样一个系统 RAM 它里面存放的是数据报负载 也就是TX和RX的包 还有各种的配置参数 安全子系统的 我们是可以直接被 RF core 来使用的 它呢主要提供验证和授权的这样一个功能 DMA 这一块 DMA它是一个主设备 BUS Master 主设备 它可以在 RF core 专用的 4K SRAM 和 MCU SRAM 之间进行数据的搬运 我们也可以看到在 RF 这一侧 RF core 这一侧 它里面有 RF 的 MCU 这一块 M0 的 MCU 它是接收来自 系统 MCU 的命令 调度这些命令实际的运行 他还有一个调制频率综合器 和 RF 接口就是这一块 它是在 bit 信息与调制信号之间 相互转换的这样一个外设 一个机构 RF 内核接收来自 MCU 的命令 验证并且执行这些命令 这些命令包括了发送接收这些面向应用的命令 也包括校准测试调试等等面向环境维护的命令 也包括校准测试调试等等面向环境维护的命令 RF 内核从系统 RAM 或者是 RF 专用 RAM 中 取得数据和配置参数 共享内存是 RF 内核与系统 MCU 的信息交互手段 这样的手段呢 可以减小 RF 内核自身对存储的需求 同时呢 MCU 和 RF 内核之间 避免了不必要的传输操作 从总体上面减小功耗 RF 内核收到数据报之后 对数据报进行解码 附带上它的一些状态信息 一起存储在系统 RAM 中 RF 内核可以使用 MCU 中的一个安全子系统 RF 内核呢也识别来自系统 MCU 的复杂指令 比如说 CCA 传输 RX 自动应答等等 这些呢在 802.15.4 里面有一些专门的论述 大家有兴趣的话可以去看一看 RF 内核内部将这些指令分解成子命令 然后自动的执行 这个当中我们是不需要有系统 MCU 的干涉的 Radio doorbell 是内核的一个模块 直译是门铃的意思 其实它就是一套命令系统 就比如说我们 MCU 里面的 event fabric 就是前面我们讲的一个路由 其实也就是消息路由这个东西 所以说名字很不知道什么意思 但是我们也能够知道他其实就是一个命令系统 这套命令系统 也叫做 CPE Command and Packet Engine CPE 这是一个简写 他负责在系统 MCU 和 RFMCU 之间传递信息 CPE 在 MCU 空间当中可以用 RFC_DBELL 这个寄存器进行访问 doorbell 呢他是有访问寄存器 参数和数据的一些 RAM 不管是在系统里面 还是在 RF 这个系统里面 一些数据和参数 还有它的一些中断的情况 RAM 呢数据和参数都是放在 RAM 当中 既可以是 SYS 也就是系统的RAM系统 MCU 的 RAM 也可以是RF自己的专用 RAM 如果这个信息是放在系统的 RAM 当中的话呢 系统 MCU 是不可以关闭电源的 因为关了的话这个信息就没有了 如果信息是存放在 RF 自己的 RAM 当中的话 系统 MCU 是可以切断电源降低功耗的 这个时候他的所有信息 都是保存在 RF 自己的 RAM 当中 具体上来说呢 我们 RF MCU 从 RAM 中读取数据和参数 这个具体的操作我们可以在后面的 contiki 的实际应用当中看到 然后操作这些 RF 不管是调制也好 还是解调也好 更新 RAM 当中的数据和参数 根据状态发出我们的中断 中断它只分了四个 有 CPE 0 1 hardware 中断 和 CMD_ACK 应答中断 这些中断呢 在我们的手册里面 都有一个详细的一个说明 这里面就不仔细说 可以查看在 interrupt 这里 使用上呢 每一个中断都基本上 和 Cortex 本身的使用没有太大的区别 只是说中断源是从 RF core 里面出来的 我们需要在 MCU system MCU里面 抓住这些中断的一些钩子 然后来执行它 RF core 它这个里面呢 还包括了一个自由的时钟 自由运行的时钟 这个时钟呢 是以四兆赫兹的固定频率来运行的 它有八个比较和捕获的这样一个功能 八个通道其中五个呢被 RF内核使用 剩下三个是可以用户自己使用的 手册里面也有相关的一些描述 是在 radio timer 这个里面 这个时钟呢使用上面 和我们普通的时钟也基本上是类似的 大家可以有兴趣看一看 我们硬件抽象层呢它是由命令组成的 这个命令呢 它也同时包括 RAM 内存中的命令结构 也包括 ROM 当中可调用的一些函数 我们在 TI 官方的公开资料当中呢 也没有找到特别详细的一些描述 这个例子呢也没有特别好的例子 所以说我们也不得不查看 contiki 它的一种操作 命令分三种形式的命令 第一种是radio操作命令 第二种是立即操作命令 第三个是直接操作命令 这张图呢我们也可以看到 这个命令的具体的一些格式 pointer to command structure 这个里面告诉我们 这个命令是以 structure 的形式存在的 后面我们可以看到这个 structure 的 一些具体形式 这个命令的形式呢是 direct command 就是直接命令的一些操作形式 那么这三个命令之间有什么区别呢 我们可以看到 radio 命令 它的操作是和 RF 相关的 比如说初始化 RF TX RX 这些一些 BUFFER 协议相关的等等 大多数的这些 radio 操作命令呢 只能在 RF idle 也就是说不工作的这样一种状态下面发出命令 立即命令它是有关修改或者是设置 RF 状态 操作 RX TX队列等等这样一种操作 我们在任何时刻都可以发出立即命令 然而大多数立即命令的响应 都希望能够得到正在运行的 RF 内核的一些状态 还有就是我们的直接命令 直接命令 direct direct command 这个直接命令 它其实就是简单的没有参数 或者是一两个字节参数的立即命令 那我们可以看看这些命令的一些具体状态 这里是它的响应状态 响应状态的话 我们也是按照一个字 按照一个字节的形式 result 给出来 command status 32 的这样一个字段 但是最后的八位一个字节 我们是一个 result 就叫相当于是我们的状态 然后剩下的三个字节 就是我们的一个返回的字节 我们可以在这个列表里面查看到一些 result 和一些 return byte 的一些东西 这个在手册上面也有 我们的命令和数据呢 可以有三种形式的访问 两种形式的访问 两种形式访问 第一种形式是直接访问 就是说我们在我们的数据结构里面 直接把它填充进去 第二种形式是单链表形式的这样一个访问 我们在我们的命令字段 命令数据结构里面 有相应的链表图指向下一个命令 和我们下一个下一个命令 比如说我们把所有的命令 通过一个单链表的形式把它串起来 这样的话我们在 RF core 里面 可以自动的按照一个命令 chain 命令链表的形式来执行每一个命令 我们每一个命令呢 还可以有它自己的触发条件 每一个触发条件呢 有一些它的一些触发的触发源 触发的一些标准 触发的判断等等这些我们在手册里面的 这个这里面也能够有一个比较好的描述 包括他的 trigger never 永远不触发等等 随着 2650 这颗芯片当中的 系统 MCU 和我们的 RF MCU之间 是通过 SRAM 进行了一个共享内存 这种形式的信息交互 所以说我们呢 需要有一些命令的一些列表 这个东西我们可以在手册上面 看的比较仔细一些 包括协议无关的一些操作 包括 NOP Radio 的建立 频率的一些东西 包括我们的 RX 其他的一些测试等等 也包括跟协议相关的一些命令 比如说我们的 Command IEEE 读取信号的一些 SCAN 等等 这里面呢比较有意思的是 它是用的是两部分 一部分称之为命令的头部 也就是说所有命令 只要是 radio operation command 这个命令 它都必须要有的 这 14 个字节 一个是命令的体 命题体也就是说每一个命令 比如说这里的 command radio setup 有它自己的一个特殊的体 包括我们在这里看到的第 14 个字节 第 15 个字节 跟这里所显示的一共 14 个字节接起来之后 形成一个完整的 command radio setup 这样一个命令 command radio setup 这样一个命令 因为也就说我们这里 每一部分都是不完整的 但是他们需要合起来 那么它就是一个完整的这样一个命令 这种命令呢我们也可以在手册里面的 比如说 radio command setup 这里是第 15 个字节 那么我们前面的 这里就是我们的命令的头部 就是它的 radio operation command 一个公共的这样一个头部 接下来呢我们用一个 contiki 的一个 运行的一个演示 来结束本次的这样一个视频

大家好

今天呢我们来一起看看

TI CC2650 这个芯片

它的射频相关的一些内容

我们按照这个次序

来对今天的这个视频进行讲解

首先我们来看一看 RF 内核的一些情况

然后来看一看硬件抽象层的一些情况

最后后面是协议相关的一些情况

最后我们用 contiki 的示例

来结束本次视频

CC2650 它里面集成有一颗 Cortex-M0

控制的 2.4G 射频收发控制器

这颗控制器

可以支持低功耗蓝牙 BLE

IEEE 802.15.4 和专用协议这三种应用

radio 子系统接口

通过接受命令的形式

在 MCU 和 Radio 之间进行消息的传递

消息可以包括命令状态数据事件等等

我们这里所关注的 802.15.4 呢

就是 ZigBee 和 6loWPAN 的底层物理标准

这个射频子系统呢

由 Cortex-M0 控制器

调制器频率综合器 RF接口

内外的一些总线桥 外部的射频驱动

内部的专用 SRAM

还有一些片上的一些驱动库

还有它的安全系统 接口

这些所构成

我们可以看看它的一个整体的框图

这边呢就是我们的系统 MCU

包括它的 Flash 系统的 RAM

还有它的安全接口

我们是挂载在一个总线上面

这个总线呢 通过我们的总线桥

可以跟 RF core 这里面进行一些相关的操作

这个 RF core 呢

里面包括一个 Cortex-M0

包括一些频率相关的一些组件

包括一个外部的 radio 的这样一个接口

在系统的 MCU 呢这一部分系统的 MCU

我们是可以运行 flash 中的代码

也可以在他的boot rom

里面去运行 driverlib 的一些代码

我们也可以运行用户层的一些应用

这个 MCU 呢它还要运行无线的一些协议栈

包括 ZigBee 的协议栈

6loWPAN 协议栈等等

比如说 BLE 低功耗蓝牙的协议栈等等

我们还需要在系统 MCU 里面呢

保持各种协议栈和应用的一些配置

并且处理一些协议栈中上层 MAC 的一些特性

系统 MCU 就是在这一头

系统的 RAM 20KB 的这样一个系统 RAM

它里面存放的是数据报负载

也就是TX和RX的包

还有各种的配置参数

安全子系统的

我们是可以直接被 RF core 来使用的

它呢主要提供验证和授权的这样一个功能

DMA 这一块 DMA它是一个主设备

BUS Master 主设备

它可以在 RF core 专用的 4K SRAM

和 MCU SRAM 之间进行数据的搬运

我们也可以看到在 RF 这一侧

RF core 这一侧

它里面有 RF 的 MCU 这一块

M0 的 MCU 它是接收来自

系统 MCU 的命令

调度这些命令实际的运行

他还有一个调制频率综合器

和 RF 接口就是这一块

它是在 bit 信息与调制信号之间

相互转换的这样一个外设 一个机构

RF 内核接收来自 MCU 的命令

验证并且执行这些命令

这些命令包括了发送接收这些面向应用的命令

也包括校准测试调试等等面向环境维护的命令

也包括校准测试调试等等面向环境维护的命令

RF 内核从系统 RAM 或者是 RF 专用 RAM 中

取得数据和配置参数

共享内存是 RF 内核与系统 MCU 的信息交互手段

这样的手段呢

可以减小 RF 内核自身对存储的需求

同时呢 MCU 和 RF 内核之间

避免了不必要的传输操作

从总体上面减小功耗

RF 内核收到数据报之后

对数据报进行解码

附带上它的一些状态信息

一起存储在系统 RAM 中

RF 内核可以使用 MCU 中的一个安全子系统

RF 内核呢也识别来自系统 MCU 的复杂指令

比如说 CCA 传输

RX 自动应答等等

这些呢在 802.15.4 里面有一些专门的论述

大家有兴趣的话可以去看一看

RF 内核内部将这些指令分解成子命令

然后自动的执行

这个当中我们是不需要有系统 MCU 的干涉的

Radio doorbell 是内核的一个模块

直译是门铃的意思

其实它就是一套命令系统

就比如说我们 MCU 里面的 event fabric

就是前面我们讲的一个路由

其实也就是消息路由这个东西

所以说名字很不知道什么意思

但是我们也能够知道他其实就是一个命令系统

这套命令系统 也叫做 CPE

Command and Packet Engine CPE

这是一个简写

他负责在系统 MCU 和 RFMCU 之间传递信息

CPE 在 MCU 空间当中可以用 RFC_DBELL

这个寄存器进行访问

doorbell 呢他是有访问寄存器

参数和数据的一些 RAM

不管是在系统里面

还是在 RF 这个系统里面

一些数据和参数

还有它的一些中断的情况

RAM 呢数据和参数都是放在 RAM 当中

既可以是 SYS 也就是系统的RAM系统 MCU 的 RAM

也可以是RF自己的专用 RAM

如果这个信息是放在系统的 RAM 当中的话呢

系统 MCU 是不可以关闭电源的

因为关了的话这个信息就没有了

如果信息是存放在 RF 自己的 RAM 当中的话

系统 MCU 是可以切断电源降低功耗的

这个时候他的所有信息

都是保存在 RF 自己的 RAM 当中

具体上来说呢

我们 RF MCU 从 RAM 中读取数据和参数

这个具体的操作我们可以在后面的

contiki 的实际应用当中看到

然后操作这些

RF 不管是调制也好

还是解调也好

更新 RAM 当中的数据和参数

根据状态发出我们的中断

中断它只分了四个

有 CPE 0 1 hardware 中断

和 CMD_ACK 应答中断

这些中断呢

在我们的手册里面

都有一个详细的一个说明

这里面就不仔细说

可以查看在 interrupt 这里

使用上呢

每一个中断都基本上

和 Cortex 本身的使用没有太大的区别

只是说中断源是从 RF core 里面出来的

我们需要在 MCU system MCU里面

抓住这些中断的一些钩子

然后来执行它

RF core 它这个里面呢

还包括了一个自由的时钟

自由运行的时钟

这个时钟呢

是以四兆赫兹的固定频率来运行的

它有八个比较和捕获的这样一个功能

八个通道其中五个呢被 RF内核使用

剩下三个是可以用户自己使用的

手册里面也有相关的一些描述

是在 radio timer 这个里面

这个时钟呢使用上面

和我们普通的时钟也基本上是类似的

大家可以有兴趣看一看

我们硬件抽象层呢它是由命令组成的

这个命令呢

它也同时包括 RAM 内存中的命令结构

也包括 ROM 当中可调用的一些函数

我们在 TI 官方的公开资料当中呢

也没有找到特别详细的一些描述

这个例子呢也没有特别好的例子

所以说我们也不得不查看 contiki 它的一种操作

命令分三种形式的命令

第一种是radio操作命令

第二种是立即操作命令

第三个是直接操作命令

这张图呢我们也可以看到

这个命令的具体的一些格式

pointer to command structure

这个里面告诉我们

这个命令是以 structure 的形式存在的

后面我们可以看到这个 structure 的

一些具体形式

这个命令的形式呢是 direct command

就是直接命令的一些操作形式

那么这三个命令之间有什么区别呢

我们可以看到 radio 命令

它的操作是和 RF 相关的

比如说初始化 RF TX RX

这些一些 BUFFER 协议相关的等等

大多数的这些 radio 操作命令呢

只能在 RF idle

也就是说不工作的这样一种状态下面发出命令

立即命令它是有关修改或者是设置 RF 状态

操作 RX TX队列等等这样一种操作

我们在任何时刻都可以发出立即命令

然而大多数立即命令的响应

都希望能够得到正在运行的 RF 内核的一些状态

还有就是我们的直接命令

直接命令 direct

direct command 这个直接命令

它其实就是简单的没有参数

或者是一两个字节参数的立即命令

那我们可以看看这些命令的一些具体状态

这里是它的响应状态

响应状态的话

我们也是按照一个字

按照一个字节的形式 result 给出来

command status 32 的这样一个字段

但是最后的八位一个字节

我们是一个 result

就叫相当于是我们的状态

然后剩下的三个字节

就是我们的一个返回的字节

我们可以在这个列表里面查看到一些 result

和一些 return byte 的一些东西

这个在手册上面也有

我们的命令和数据呢

可以有三种形式的访问

两种形式的访问

两种形式访问

第一种形式是直接访问

就是说我们在我们的数据结构里面

直接把它填充进去

第二种形式是单链表形式的这样一个访问

我们在我们的命令字段

命令数据结构里面

有相应的链表图指向下一个命令

和我们下一个下一个命令

比如说我们把所有的命令

通过一个单链表的形式把它串起来

这样的话我们在 RF core 里面

可以自动的按照一个命令 chain

命令链表的形式来执行每一个命令

我们每一个命令呢

还可以有它自己的触发条件

每一个触发条件呢

有一些它的一些触发的触发源

触发的一些标准

触发的判断等等这些我们在手册里面的

这个这里面也能够有一个比较好的描述

包括他的 trigger never

永远不触发等等

随着 2650 这颗芯片当中的

系统 MCU 和我们的 RF MCU之间

是通过 SRAM 进行了一个共享内存

这种形式的信息交互

所以说我们呢

需要有一些命令的一些列表

这个东西我们可以在手册上面

看的比较仔细一些

包括协议无关的一些操作

包括 NOP Radio 的建立 频率的一些东西

包括我们的 RX 其他的一些测试等等

也包括跟协议相关的一些命令

比如说我们的 Command IEEE

读取信号的一些 SCAN 等等

这里面呢比较有意思的是

它是用的是两部分

一部分称之为命令的头部

也就是说所有命令

只要是 radio operation command 这个命令

它都必须要有的

这 14 个字节

一个是命令的体

命题体也就是说每一个命令

比如说这里的 command radio setup

有它自己的一个特殊的体

包括我们在这里看到的第 14 个字节

第 15 个字节

跟这里所显示的一共 14 个字节接起来之后

形成一个完整的

command radio setup 这样一个命令

command radio setup 这样一个命令

因为也就说我们这里

每一部分都是不完整的

但是他们需要合起来

那么它就是一个完整的这样一个命令

这种命令呢我们也可以在手册里面的

比如说 radio command setup

这里是第 15 个字节

那么我们前面的

这里就是我们的命令的头部

就是它的 radio operation command

一个公共的这样一个头部

接下来呢我们用一个 contiki 的一个

运行的一个演示

来结束本次的这样一个视频

视频报错
手机看
扫码用手机观看
收藏本课程

视频简介

CC2650之射频(上)

所属课程:CC2650开发套件详解 发布时间:2015.12.11 视频集数:11 本节视频时长:00:16:09

该视频结合802.15无线器件,组网,应用等使用经验,讲述CC26xx芯片分析介绍、CC2650DK出厂演示程序使用和用途分析,射频相关基础闲聊等。旨在帮助新进工程师快速开启最新最潮的cc26xx系列无线设计。

TI培训小程序