首页 > 产品 > 微控制器 (MCU) 和处理器 > CC1310软/硬件开发速成——-现场培训精彩内容回放 >

基于 Arm 的微控制器

最新课程

热门课程

CC1310软件速成之一 – CC1310架构及工作原理

大家好,我是德州仪器 无线连接技术部门 的现场应用工程师Barbara Wu 这里我要给大家介绍德州仪器 一机以下无线芯片 CC1310软件开发的相关知识 第一讲中,我们一起来看一下 CC1310是由几个部份组成的 同时,这些部份是如何协同工作 完成各种功能又达到低功耗的 从框度中我们可以看到 CC1310主要由四个部分组成 主MCU、RF核、Sensor Controller Engine和一些外设 主MCU搭载的是ARM Cortex-M3 它作为CC1310主要的操控部份 包含的是RTOS和 对底层外部接口的ㄧ些drivers 同时客户的应用程序也跑在这个部分 RF核顾名思义就是和射频相关的 它包含的是射频的一些接口 主MCU通过发送命令 的方式可以控制射频进行工作 同时RF核会返回 射频工作的结果给主MCU Sensor Controller Engine 是CC1310独有的一个部份 它可以独立于主MCU工作 主要操控的是外部传感器和一些接口 可以自己做一些小的编程 Peripherals就是一些外设 包括一些GPIO UART的口 AES加密、Timers相关的 那么下面我们就来看一下 Sensor Controller和整个的这个系统 是如何工作的 在这个例子中 CC1310需要完成的工作 是以一秒的频率 从外部的传感器获取数据 然后把这个数据通过AES加密 最后发送出去的 那么整个系统是如何达到低功耗的呢 我们可以看一下 首先,主MCU、RF Core和外设 全部都是关闭的 Sensor Controller Engine 独立于这三个部分独立工作 从外部的传感器 以一秒的频率进行采样 Sensor Controller Engine 它可以独立编程 那么在编程逻辑里面 我们加入了对传感器数据的判断 如果传感器的数据高于预值 那么我们就唤醒主MCU 否则继续进行采样 在这样的工作状态下 整个系统的平均功耗是1.6个微安 如果Sensor Controller 获取到的传感器的数高于预值 那么它就会唤醒主MCU 主MCU会调用AES加密 对数据进行加密 同时准备对RF Core进行初始化 主MCU通过发送TX命令 对RF Core进行操控 RF Core在接受到命令之后 会自动对命令进行处理 并把数据返回给主MCU 在发送的过程中 整个的系统功耗是5.3个毫安 当发送完成之后 主MCU会继续关闭RF Core 这样又会回到刚才的省电状态 所以整个系统的平均功耗 并不是所有的部份同时工作的功耗 只有在需要射频工作的时候 功耗才达到最高 其余的时候可以进入低功耗状态 刚才我们一直有提到 主MCU是通过命令的方式 来操控射频接口进行工作的 那么接下来我们就介绍一下 CC1310射频工作的基本原理 CC1310作为德州仪器一机以下 新一代的无线芯片 它的射频的操控构架 和老一代的产品是不一样的 老一代的产品主要是 通过寄存器对RF进行控制 比如我们可以通过配置寄存器 来改变不同的射频配置 也可以通过寄存器 来打开不同的操作模式 比如发送接收进入IDLE或者SLEEP 的状态都是通过寄存器控制的 那么在1310这一边 主要是通过API接口 也就是发送命令的方式 来对它进行控制 包括发送、接收、Sniff等等 所有的对射频的 配置和不同操作的切换 都可以通过命令的方式来解决 我们可以看看 老一代的无限芯片CC1120 和CC1310在设置上的不同 这里以对射频合成器的配置来举例 那么在老一代的CC1120芯片上 我们必须逐个的配置26个寄存器 而在CC1310上面 只需要发送一个command CMD_FS 就可以对射频合成器进行配置了 那么每一个command 它的结构又是怎么样的呢 在这里可以看到一个命令 它包含一个通用的命令头 和每个命令独有的数据部份 通用的命令头包含六个部分 命令号是每个命令独有的命令标示 无线射频模块通过这个命令标示 来判定当前执行的命令是哪一个状态 主MCU可以通过读取这个状态值 来知晓当前的这个命令 在无线模块中被处理的状态 指向下一个命令的指针 这个地方存储的 可以是当前命令运行完之后 需要运行的下一个命令的指针 一个实际的应用实例 可以是比如说 当我们需要在接收完数据之后 立即发送一个ACK 那么我们就可以在每一次 RX Command的下一个指针 指向TX Command 这样的话我们就可以提高 RX和TX命令进行切换的一个效率 同时完成这样的一个功能 startTime是当前命令的执行时间 起始执行时间它可以是一个绝对时间 也可以是一个相对的时间 绝对时间通常是 必须要大于系统时间的 比如我们希望当前的命令 在具体的某一个系统时间进行执行 那么我们可以设定 这个参数为系统的一个绝对时间 那么到了这个系统的绝对时间 这个command就会被执行 startTrigger代表的是 当前命令的一个触发条件 它可以有很多种不同的设定 比如现在就触发 或者在一个绝对时间触发 或者是从来都不触发 只是在be enable command 这个条件为1的时候才触发 condition这个条件 其实是对下一条命令来说的 它可以有很多种不同的执行条件 比如说COND_ALWAYS 就是每一次在 当前command执行完成之后 下一条命令就会执行 COND_NEVER意思是 从来不执行下一条命令 COND_STOP_ON_FALSE 意思是如果 当前的命令执行返回为true 那么我就执行下一条命令 如果返回为false 那我就停止执行 那么主MCU是如何 和射频模块进行数据通信的呢 在途中我们可以看到 在主MCU和RF Core之间 其实是有一个 Radio Doorbell的模块的 这个模块会根据当前RF Core的状态 和自己拿到的所有主MCU需要 RF Core这边执行的命令的列表 来进行命令的排序 以及操控RF Core来进行执行 当命令需要被进行执行的时候 RF Core可以直接访问主MCU的内存 来读取当前命令的内容 从而能够执行当前的命令 所有和CC1310相关的命令 都可以通过 Technical Reference Manual来获取 在TI的官网上 可以找到这个文档的下载链接 文档中对所有的命令都有详细的解释 欢迎大家下载 谢谢大家的时间

大家好,我是德州仪器 无线连接技术部门

的现场应用工程师Barbara Wu

这里我要给大家介绍德州仪器 一机以下无线芯片

CC1310软件开发的相关知识

第一讲中,我们一起来看一下

CC1310是由几个部份组成的

同时,这些部份是如何协同工作

完成各种功能又达到低功耗的

从框度中我们可以看到 CC1310主要由四个部分组成

主MCU、RF核、Sensor Controller Engine和一些外设

主MCU搭载的是ARM Cortex-M3

它作为CC1310主要的操控部份

包含的是RTOS和 对底层外部接口的ㄧ些drivers

同时客户的应用程序也跑在这个部分

RF核顾名思义就是和射频相关的

它包含的是射频的一些接口

主MCU通过发送命令 的方式可以控制射频进行工作

同时RF核会返回 射频工作的结果给主MCU

Sensor Controller Engine 是CC1310独有的一个部份

它可以独立于主MCU工作

主要操控的是外部传感器和一些接口

可以自己做一些小的编程

Peripherals就是一些外设

包括一些GPIO UART的口 AES加密、Timers相关的

那么下面我们就来看一下

Sensor Controller和整个的这个系统 是如何工作的

在这个例子中

CC1310需要完成的工作 是以一秒的频率

从外部的传感器获取数据

然后把这个数据通过AES加密 最后发送出去的

那么整个系统是如何达到低功耗的呢

我们可以看一下

首先,主MCU、RF Core和外设 全部都是关闭的

Sensor Controller Engine 独立于这三个部分独立工作

从外部的传感器 以一秒的频率进行采样

Sensor Controller Engine 它可以独立编程

那么在编程逻辑里面 我们加入了对传感器数据的判断

如果传感器的数据高于预值

那么我们就唤醒主MCU

否则继续进行采样

在这样的工作状态下 整个系统的平均功耗是1.6个微安

如果Sensor Controller 获取到的传感器的数高于预值

那么它就会唤醒主MCU 主MCU会调用AES加密

对数据进行加密 同时准备对RF Core进行初始化

主MCU通过发送TX命令 对RF Core进行操控

RF Core在接受到命令之后 会自动对命令进行处理

并把数据返回给主MCU

在发送的过程中

整个的系统功耗是5.3个毫安

当发送完成之后 主MCU会继续关闭RF Core

这样又会回到刚才的省电状态

所以整个系统的平均功耗 并不是所有的部份同时工作的功耗

只有在需要射频工作的时候

功耗才达到最高

其余的时候可以进入低功耗状态

刚才我们一直有提到 主MCU是通过命令的方式

来操控射频接口进行工作的

那么接下来我们就介绍一下 CC1310射频工作的基本原理

CC1310作为德州仪器一机以下 新一代的无线芯片

它的射频的操控构架 和老一代的产品是不一样的

老一代的产品主要是 通过寄存器对RF进行控制

比如我们可以通过配置寄存器 来改变不同的射频配置

也可以通过寄存器 来打开不同的操作模式

比如发送接收进入IDLE或者SLEEP 的状态都是通过寄存器控制的

那么在1310这一边 主要是通过API接口

也就是发送命令的方式

来对它进行控制

包括发送、接收、Sniff等等

所有的对射频的 配置和不同操作的切换

都可以通过命令的方式来解决

我们可以看看 老一代的无限芯片CC1120

和CC1310在设置上的不同

这里以对射频合成器的配置来举例

那么在老一代的CC1120芯片上

我们必须逐个的配置26个寄存器

而在CC1310上面

只需要发送一个command

CMD_FS

就可以对射频合成器进行配置了

那么每一个command

它的结构又是怎么样的呢

在这里可以看到一个命令 它包含一个通用的命令头

和每个命令独有的数据部份

通用的命令头包含六个部分

命令号是每个命令独有的命令标示

无线射频模块通过这个命令标示

来判定当前执行的命令是哪一个状态

主MCU可以通过读取这个状态值

来知晓当前的这个命令 在无线模块中被处理的状态

指向下一个命令的指针

这个地方存储的 可以是当前命令运行完之后

需要运行的下一个命令的指针

一个实际的应用实例

可以是比如说 当我们需要在接收完数据之后

立即发送一个ACK

那么我们就可以在每一次 RX Command的下一个指针

指向TX Command

这样的话我们就可以提高 RX和TX命令进行切换的一个效率

同时完成这样的一个功能

startTime是当前命令的执行时间

起始执行时间它可以是一个绝对时间 也可以是一个相对的时间

绝对时间通常是 必须要大于系统时间的

比如我们希望当前的命令

在具体的某一个系统时间进行执行

那么我们可以设定

这个参数为系统的一个绝对时间

那么到了这个系统的绝对时间

这个command就会被执行

startTrigger代表的是 当前命令的一个触发条件

它可以有很多种不同的设定

比如现在就触发

或者在一个绝对时间触发

或者是从来都不触发

只是在be enable command 这个条件为1的时候才触发

condition这个条件 其实是对下一条命令来说的

它可以有很多种不同的执行条件

比如说COND_ALWAYS

就是每一次在 当前command执行完成之后

下一条命令就会执行

COND_NEVER意思是 从来不执行下一条命令

COND_STOP_ON_FALSE

意思是如果 当前的命令执行返回为true

那么我就执行下一条命令

如果返回为false 那我就停止执行

那么主MCU是如何 和射频模块进行数据通信的呢

在途中我们可以看到

在主MCU和RF Core之间

其实是有一个 Radio Doorbell的模块的

这个模块会根据当前RF Core的状态

和自己拿到的所有主MCU需要

RF Core这边执行的命令的列表

来进行命令的排序 以及操控RF Core来进行执行

当命令需要被进行执行的时候

RF Core可以直接访问主MCU的内存

来读取当前命令的内容 从而能够执行当前的命令

所有和CC1310相关的命令

都可以通过 Technical Reference Manual来获取

在TI的官网上

可以找到这个文档的下载链接

文档中对所有的命令都有详细的解释

欢迎大家下载

谢谢大家的时间

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

视频简介

CC1310软件速成之一 – CC1310架构及工作原理

所属课程:CC1310软/硬件开发速成——-现场培训精彩内容回放 发布时间:2017.03.31 视频集数:11 本节视频时长:00:09:09

介绍芯片的组成部分以及各个部分是如何协同工作并达到低功耗。

TI培训小程序