WCS (4.2b) CC13xx CC26xx Schematics (2)
Loading the player...
将在30s后自动为您播放下一课程
私有模式就是我们的 就是我们有 TI 的有 因为有很多那个通讯的一些东西嘛 一些无线的一些产品 通讯的一些协议什么什么的 比如说像 BLE 那个802.15.4 什么 ZigBee 上面这些东西 还有就是一些私有的东西 那这个怎么说 在我们的13和26的那个架构里面 我们就是说都是可以支持这些东西 就是说对 M0 来讲 它是完全是 就是说是那个对它来讲 是一些射频的工作对吧 你上面一些跑一些不同的协议它不管 你只要把它配置成在哪个频段工作哪种模式去工作 然后上面就跑相应的协议就可以所以三方里面很多 都是一些私有的一些东西嘛对吧 有可能会跑6LoWPAN 其实就是这么一种架构 那边它是 那我们的底下的那个 M0 它是完全就是说支持这些模式 就很简单 然后这是我们13支持的所有的那个调试方式 有这么多 速度是可以从4.8到500 kbps 然后这是我们的那个带宽范围45K到4240K 4.2兆 4兆最大 然后那个Preamble 就是说你可以就前导码可以长度是可以自己那个设置的 然后那个同步字 0-64 bits 都是有一些特色 这个没有什么特别的其实 那就是可能早上也有人问过就是刚才就是我们 原来比如说我在用那个老的1101 1120 1200 这些东西做那个开发的时候已经有一些产品了 那我这个新的东西导入进去 它们会还会兼容 所以我们这边13的话 它是说是完全向下兼容 就是老我们老的这些产品 所以就被大家如果在11老的平台基础上 开发新的应用 其实来讲的话也不是不需要付出很多的 那个就是说代价嘛主要是向原来兼容的 TI 目前就是已经有的就是我们有 Smart RF06板子 看上去很像那个26的其实确实很像就长得是一样的 然后还有那个1310的那个 EVM 板 它们基本上是一样的 那唯一的特点不同的地方可能是说 天线可能有点不太一样 和2.4G 这上面它画对 就是大概这个样子 拿到的时候你可以看一下 就是应该有不同的天线设计跟 2.4G 是不一样 如果拿到跟2650 就是 BLE 一样的那个板子 那就说明 TI 给你们发错板子了 然后那个价格是跟那个一样的 也是299 因为可能底板比较贵吧 这个都是说 TI 官网上可以申请到 我们有1350 SensorTag 就是将来 1350 这一颗料 它同时支持就是说有 BLE 的功能 然后也有那个 Sub-1G 的东西 然后你可以就是说那 Sub-1G 的东西 你就不能直接用手机去看了 你跟另外的接收 然后可能另外一块 Sub-1G 的板接收之后 你用屏幕再看看它上面一些传感器的信息 然后它里面天线就我前面讲过 它会有两根天线 然后做 Switch 那个还有我们会有1310 1350的Launch Pad 就是那个火箭版的 所谓的发射板 它会有那个也会有 接下来会有那个量产 所以现在有的是这块 大家可以有兴趣去 如果要做的话就可以这个开始 我个人要推荐这种 因为为什么 因为它的 IO 接口比较全 这个就是跟早上类似的就是跟我讲26的时候也讲过 就是26的那个功耗嘛对吧 13也是一样的 因为架构是一样的 M3 M0 然后它也有 Standby Current 一样的就是0.65 uA 然后它 M3 在工作的时候是多少每兆 在48 MHz下面是多少 需要消耗多少电流全速跑的时候对吧 然后射频这边由于它那个发射功率不太一样 所以那个它的发射的时候稍微高一点 其它地方都是一样 就是那个13的那个可以看到 软件架构 TI也会提供相应的就是13xx 的 SDK 那么跟那个26不太一样 CCS IAR 看的都眼熟 然后也是一样 两个 会有两个工程 有 Application 有一个 Stack 这个Stack 你可以跑不同的 Stack 比如说你没关系 你可以私有的那个东西 当然也有 BLE BLE 的东西可以 然后上面可以跑 或者是 6LoWPAN 的Stack 对吧 然后那个 Application 就是你自己定义的一些东西 自己的这些应用什么传感器 怎么传数据什么这些 这都跟26的都是一样的 下面也是Lower Layers RTOS 的 kernel RF的那个一些驱动 还是在那个 M3 的 Driver 里面 M3 的 ROM 里面 然后那个 RF 的实际操作的一些东西呢 是在 M0 里面是这样 这是 TI-RTOS TI-RTOS呢 就是说在那个26 13 包括一会儿我们那个(人名)会讲 32里面 它其实都是有 都是存在的 以后 TI 的出来的无线产品里面都是带着 TI-RTOS 所以如果比如说你原来做过那个做了一个 CC26xx的 像我就是做 CC2640 做过比较熟的 然后我这个时候我再去做那个13 可能对我来讲很多接口都长得一样 特别是那些驱动的什么 UART SPI PWM 这些乱七八糟这些外设的东西 驱动一看 就是说接口跟原来一模一样的 包括整个 因为 RTOS 它运行的整个机制什么都是一样 所以如果你玩过其中一个的话 就玩其它的 就是你可能想玩了 BLE 以后 你又想去搞一下那个什么 Sub-1G 接了又想去玩下WiFi 3200 可能就会觉得很容易很方便 因为 TI 都是以 RTOS 的方式 提供一些开发软件接口 那这边也不多讲 反正就是一般的 RTOS 它都是有优先级抢断 多线程的一些东西 然后有我们有 Scheduler 就是那个 Task 的调度机制 还有那个你可以有那个 kernel 就说我们甚至你可以裁减kernel 就是说 因为 TI-RTOS 它其实 它比一般的可能很多人用过 CE 那个东西要大一些 但是说功能更全一点 就说因为我们 因为我们就说 RTOS 会不停的更新 会有一些变化或怎么样 对吧 你们如果可以根据那个我们的那个更新之后 每次你可以重新安装然后可以看到它里面文档 什么东西加了什么减什么 修理什么bug 所以那 Zero-latency interrupts 就是那个 这其实也没有什么 我觉得这些东西都没有 本质上都没有什么特别 就是 RTOS 它当然会有一些中断处理 但因为大家都知道 有那个 RTOS 它无非就是调度 任务分配 然后那个各种切换 上下文切换 然后加那个 加一些什么 Timer 什么这些东西在里面 那这些都是其实都是 RTOS 的本质属性 所以我也在这里多说了 我想说的就是说是我们的那个这边 好 这两块是比较特殊的 就是因为针对我们TI的cc26 13 或者是那个3200的那个硬件 我们上面有很多外设嘛对吧 一般情况下大家拿到芯片之后 就是就拿到一颗芯片 比如说唉我用了其它的那个 自己原来有的 比如说Free RTOS 或者corse这些东西(9:08) 然后后来移到我们的 比如说移到自己的 MCU 上面 然后发现唉它可能不支持所有的 MCU 的一些驱动 它不可能支持那么多 每家都不一样 所以它就你就得 如果你要去调这些什么 GPIO 的驱动 或者UART SPI这个东西的时候 那你可能得又要去配寄存器什么什么 跟它那个 跟你的那个 MCU 的 Guide 的对吧 那个 Datasheet或者是那个 RTM 来 RTM 来 那 TI 做的是什么东西呢 就是我们在 RTOS 上面 因为这些芯片都是我们自己的 对吧 RTOS 也是我们自己 然后它会把所有的驱动都封装成 API 然后提 就是说提供出来 就比如说UART 等于叫 open 然后Read Write 这样就可以了 不要再定义寄存器 一开始就什么都不需要 可能就感觉有点像 Windows 编程那种 包括那个刚刚前面提过那个射频的一些 私有的一些指令 什么都是以 API 的形式在我们 TI-RTOS 里面 所以这个是比较方便很友好的界面 另外一点就是我们有那个 Power Management在里面 就是那个 TI-RTOS 里面 这个就是说是 因为是低功耗射频设备设备 所以这个东西尤其重要 在那个我们的那个 在我们的整个那个系统里面 所以大家有兴趣 就是这个可以去看一下 就是我们是怎么 因为我们有不同的那个 Power Mode 在不同 Power Mode 下面 我们这个 RTOS 它会自动 因为 RTOS 一直在运行 它会自动去切换 就是说打开关闭哪些外设 就是你可以预先设置 就是说你需要在某个模式下面 哪些外设还是工作的 哪些外设就不需要了对吧 然后你设置好之后 这个 RTOS 它会Power Management 它会自动帮你 那个在你运行过程中 就是到不同模块模式切换的时候 它就会进入不同的这种功耗模式 打开关闭某些设备外设什么这些东西 然后 CCS 里面我们提供了一个叫 System analyzer 其实也是 RTOS 的 要结合 TI- RTOS 可以看到的就说是这个比较重要 就也比较蛮好玩的就是你可以看相当于一个 你比如说你内存用了多少对某一个 Task 用多少 最峰值的时候用多少内存 平均用多少内存 什么类似这种东西可以去看一下 CCS 里面 TI 提供的工具 首先是我们 SmartRF Studio 这是一个 其实是一个通用的工具 它用 Sub-1G 上面可以用 然后用我们的那个 ZigBee BLE 都是可以用得上 然后跟原来的那个 SmartRF Studio 一样 现在是7 以前有6什么的一样 它就是说是它能有产生 那个能产生相关的那个 Code 的 你可以直接导到你工程里面去 然后就可以在那边配一下一些命令 这些以前是寄存器对吧 现在应该都是那个这些这个命令 就是 API 这么很简单很直观的设置频率 什么是 TX 模式 然后那个就是说 那个开始接收发送 这些东西都是在这边 很简单 那就是说这就是你设置好之后 它产生出了那个代码 也可以把它打到你们那个工程里面去 它会有 SmartRFstudio.c 文件 SmartRFstudio.h 很简单 Sensor Controller 跟那个26xx里面是一样的我们有 2K 的 SRAM 就是说它自己跑的 然后那个前面提到过的 8.2 uA/MHz 的那个运行 可以 就是可以32kHz 24MHz里面运行 它说是32kHz的话 效率比较低 因为我们的这个一般低功耗 低功耗射频设备里面都会有两个晶振对吧 一个32kHz的一个24MHz 32K就是RTC 24MHz的话 就是我们这个 Sensor Controller 它最好是在目前来看 是在24MHz下面运行的话是比较最好的 因为它效率高 然后很少时间就执行完了之后 就是那个功耗相对来说比较低 然后它可以进入这个睡眠模式 这样然后把其它事情丢给那个 M3 去处理 那效率会高 所以我们有一些 就是你下载完 Sensor Controller Studio这个工具之后呢 然后你打开 然后我们里面就有一些现成的一些 那个实例代码在那边 就说有 Motion Detector 就是你那个移动的 那个然后有那个 Capacitive touch的 那个我们忘了说 就是我们的那个2613都支持 Capacitive touch 那个代码 还有Proximity Sensor 还有什么加速器 还有那个 ADC 采集的一个数据 还有就是那个 Pulse counting 就是那个脉冲计数的实际代码 就其实都是很多都是跟 Sensor 是有关的 基本上都是跟Sensor有关的 应该 就在打开这个Sensor Controller Studio 你可以把这些实例工程导进去 然后看看其实就很简单 就一个开始设置 然后执行 然后结束了 就分这三段 我在这里不多不仔细讲 反正就你们看一下工程就知道了 然后就是它那个界面可以看到 你可以就是 open existing project 打开之后对吧 然后就可以看一下里面的一些东西 这是一个 Example 我们有的这些 就说 Capacitive touch ADC 采集这些在这边 那就说 TI 的13xx系列呢 就是还导入了一个叫做 Command Chaining的一个概念 这是什么东西呢 就原来我们的 像老的一些1110这些东西里面是没有这个东西的 这是干嘛呢 就是说是原来的话你可能要接收 要发送你的一个就是说去配那些那个命令 等待什么 到时候比方这个我们是一个就是命令链 我们叫做 所以叫做就是说你可以比如说每一个动作 比如说你设置频率 然后 RX 然后再等等什么什么 就你可以把这些命令 我们13xx它就提供了接口 可以 就是软件接口 就可以让你把这些命令串起来 就一个连一个 一个连一个 你可以 所以它可以让它去自动执行嘛 你就是设置完那个 frequence 之后 你就可以直接它会自动的 比如说你设计一个Timer 或者 Counter 然后什么时候进入 RX 它就把那个窗口打开 就等到那个对方数据过来 然后就相当于就是说 这个怎么说呢 在我的理解来看 就是说这样的话 就是说你类似于可以 像蓝牙一样定义自己的一个 Profile 相当于你可以定义一个 整个完整的就是两边的一个交互的数据流程 或者怎么样 对吧设置完之后 然后让 M3 去执行就可以了 就很简单去控制它怎么怎么样执行 所以这个的话 我们有一个就是等会儿 我可以给大家看 就是那个等会就会有一个slice 这边讲到这个 我们这个 command 的一个结构 一个结构里面它有一个比较重要的 就是一个 Next command pointer 就是就是连起整个就命令链的一个关键 就是你的这条命令 我里面有一个 pointer 是指向下一条命令的那个地址的是这样 然后会不会有一些 实际的例子可以给大家看 然后Start triggers 就是怎么样Start 你要 Delay execution呢 就是说 还是说是 就是还是就 Delay 相当于你用内部的一个 Timer 这种过一会去执行呢 还是说是外部的一个 比如说是 IO 触发它 开始执行整条命令 不是 执行一遍 也一样的 还有一个 End trigger 就是说你命令开始到整条命令链结束完 它是有一个 Time out 呢 还是说是有一个也是外部的一个可能 就是说事件触发里面 我不要说了 停止接收或停止发送这样一个东西 所以可以看 就是说接着往下看 就是这是个命令的一个架构 很重要的就是 Specific Data 就是命令的 这个命令的数据 这上面是命令的 Header 就是那个头 我们所有的那个刚才讲到了 什么 pointer 什么乱七八糟 都在这个头里面 就是头的那个情况 Command number ID number Status 就是其他的一些状态 关键就是说这个就是 pNextOp 这点 这个就是说是下一个要执行的指令 把它地址它放到这边 然后那个 Start Timer 就是那个什么时候去执行这个命令 然后 trigger 比如说它有各种trigger的 现在有TRIG_NOW NEVER ABSTIME 就是说跟前面那个设定是有关的 Absolute time 还是 relative time 它相对时间还是这种绝对时间 就是那个CPU系统里面的那些东西都 都可以这样跟着它去设 然后 condition 就说是就是那个状态嘛对吧 就是说你下一个指令 你是说是永远不执行或者说有 还是执行还是怎么样对吧 还是说在某一个状态下 它就停止命令这种 那具体的例子呢 其实这样的话就比较直观 首先就是说我们配置一个在那个 RX的一条指令 这是第一条命令 我们要执行那个命令 就是被 trigger 的命令 然后第二条命令就是 TX 命令 这是我们干嘛用呢 就是我们我们订一个类似于 比如私有的握手的一个协议 就是我发 就是私有握手协议 就是我先收一个数据 然后收一个收一包数据 然后再告诉对方 我就是收到这个数据 就是所以我先 RX 一下 然后再 TX 一下对吧 然后你可以就是然后把两头命令串起来 就是用那个pointer 然后那个我这边收到了 唉我觉得 RX 我觉得数据处理OK了 我就自动的发一个 TX 出去 中间可以判断 这个也是一样的 相对来的 就是说那个 TX 就是另外一端 我先发送 发送完了之后 我在这边启动一个 Timer 等嘛对吧 然后等 然后这都是 M0 里面的处理 M3 发给 M0 的那个事件那个命令 就是 M3比如发给 M0 TX 完了之后 M3 就睡觉了 然后 M0它就直接执行下面的东西 它就等着那个 RX RX收到数据之后它判断如果是正确的 它可能就是有事情要处理 它可以把 M3唤醒 如果不对它可以回到 TX 重发 就是完全你们自己就是可以定义的 那种相当于把这个下条指令之前的 Timer错过去了 可以那个自己定义的一个就是命令链 那这就是 Retry Counter 什么意思呢 就是前面的我们再加一步 就是说你不能总是 我没收到对方的 ack 可我在不停的重发 不停重发这种对吧 那我可以加个 Counter 那就我重发或者等待对方接收几次以后 我这我就停止 认为这个包是丢了或错了或怎么样对吧 所以一样的先 TX TX 完了之后 它指向下一条命令就是等待 RX 如果 Timer Out之后我就开始Count记一次 然后重新来 TX 再等 RX然后又没收到 然后再 count 到了一定次数之后我就停掉了 我就认为这个就不对了对吧 就是这样很简单 那就是这个就是另外一种情况 就是当然刚才我们说的可能 就是说是我没有设置 只设置了一个频段对吧 我们有多种频段 因为这完全是就是可以自己配置 你可以在一个频段上先设置 然后接收完 然后再设置另外一个可以呢再发送 这样都是命令链这样下去 你就先设置好 然后丢给 M0去处理 然后它收到了正确的 ack 之后再唤醒 M3 这样就是说达到我们这种低功耗的目的 不停的可以循环 你也可以这样执行完一次就结束了 其实就相当于我们 你可以想象就是因为我们 BLE 里面 BLE 里面就是跳频了嘛对吧 它每次发时候它接收发送完一个频段之后 它就会切换到下一个 我们有 Channel Map 对吧 我们知道下次应该跳到哪个 Channel上去 其实你也可以认为 其实 BLE 里面本质上做的是类似这种事情 当然其它 我们这边是 Sub-1G 的 就是 1GHz 以下的那个平台上面它这样做
私有模式就是我们的 就是我们有 TI 的有 因为有很多那个通讯的一些东西嘛 一些无线的一些产品 通讯的一些协议什么什么的 比如说像 BLE 那个802.15.4 什么 ZigBee 上面这些东西 还有就是一些私有的东西 那这个怎么说 在我们的13和26的那个架构里面 我们就是说都是可以支持这些东西 就是说对 M0 来讲 它是完全是 就是说是那个对它来讲 是一些射频的工作对吧 你上面一些跑一些不同的协议它不管 你只要把它配置成在哪个频段工作哪种模式去工作 然后上面就跑相应的协议就可以所以三方里面很多 都是一些私有的一些东西嘛对吧 有可能会跑6LoWPAN 其实就是这么一种架构 那边它是 那我们的底下的那个 M0 它是完全就是说支持这些模式 就很简单 然后这是我们13支持的所有的那个调试方式 有这么多 速度是可以从4.8到500 kbps 然后这是我们的那个带宽范围45K到4240K 4.2兆 4兆最大 然后那个Preamble 就是说你可以就前导码可以长度是可以自己那个设置的 然后那个同步字 0-64 bits 都是有一些特色 这个没有什么特别的其实 那就是可能早上也有人问过就是刚才就是我们 原来比如说我在用那个老的1101 1120 1200 这些东西做那个开发的时候已经有一些产品了 那我这个新的东西导入进去 它们会还会兼容 所以我们这边13的话 它是说是完全向下兼容 就是老我们老的这些产品 所以就被大家如果在11老的平台基础上 开发新的应用 其实来讲的话也不是不需要付出很多的 那个就是说代价嘛主要是向原来兼容的 TI 目前就是已经有的就是我们有 Smart RF06板子 看上去很像那个26的其实确实很像就长得是一样的 然后还有那个1310的那个 EVM 板 它们基本上是一样的 那唯一的特点不同的地方可能是说 天线可能有点不太一样 和2.4G 这上面它画对 就是大概这个样子 拿到的时候你可以看一下 就是应该有不同的天线设计跟 2.4G 是不一样 如果拿到跟2650 就是 BLE 一样的那个板子 那就说明 TI 给你们发错板子了 然后那个价格是跟那个一样的 也是299 因为可能底板比较贵吧 这个都是说 TI 官网上可以申请到 我们有1350 SensorTag 就是将来 1350 这一颗料 它同时支持就是说有 BLE 的功能 然后也有那个 Sub-1G 的东西 然后你可以就是说那 Sub-1G 的东西 你就不能直接用手机去看了 你跟另外的接收 然后可能另外一块 Sub-1G 的板接收之后 你用屏幕再看看它上面一些传感器的信息 然后它里面天线就我前面讲过 它会有两根天线 然后做 Switch 那个还有我们会有1310 1350的Launch Pad 就是那个火箭版的 所谓的发射板 它会有那个也会有 接下来会有那个量产 所以现在有的是这块 大家可以有兴趣去 如果要做的话就可以这个开始 我个人要推荐这种 因为为什么 因为它的 IO 接口比较全 这个就是跟早上类似的就是跟我讲26的时候也讲过 就是26的那个功耗嘛对吧 13也是一样的 因为架构是一样的 M3 M0 然后它也有 Standby Current 一样的就是0.65 uA 然后它 M3 在工作的时候是多少每兆 在48 MHz下面是多少 需要消耗多少电流全速跑的时候对吧 然后射频这边由于它那个发射功率不太一样 所以那个它的发射的时候稍微高一点 其它地方都是一样 就是那个13的那个可以看到 软件架构 TI也会提供相应的就是13xx 的 SDK 那么跟那个26不太一样 CCS IAR 看的都眼熟 然后也是一样 两个 会有两个工程 有 Application 有一个 Stack 这个Stack 你可以跑不同的 Stack 比如说你没关系 你可以私有的那个东西 当然也有 BLE BLE 的东西可以 然后上面可以跑 或者是 6LoWPAN 的Stack 对吧 然后那个 Application 就是你自己定义的一些东西 自己的这些应用什么传感器 怎么传数据什么这些 这都跟26的都是一样的 下面也是Lower Layers RTOS 的 kernel RF的那个一些驱动 还是在那个 M3 的 Driver 里面 M3 的 ROM 里面 然后那个 RF 的实际操作的一些东西呢 是在 M0 里面是这样 这是 TI-RTOS TI-RTOS呢 就是说在那个26 13 包括一会儿我们那个(人名)会讲 32里面 它其实都是有 都是存在的 以后 TI 的出来的无线产品里面都是带着 TI-RTOS 所以如果比如说你原来做过那个做了一个 CC26xx的 像我就是做 CC2640 做过比较熟的 然后我这个时候我再去做那个13 可能对我来讲很多接口都长得一样 特别是那些驱动的什么 UART SPI PWM 这些乱七八糟这些外设的东西 驱动一看 就是说接口跟原来一模一样的 包括整个 因为 RTOS 它运行的整个机制什么都是一样 所以如果你玩过其中一个的话 就玩其它的 就是你可能想玩了 BLE 以后 你又想去搞一下那个什么 Sub-1G 接了又想去玩下WiFi 3200 可能就会觉得很容易很方便 因为 TI 都是以 RTOS 的方式 提供一些开发软件接口 那这边也不多讲 反正就是一般的 RTOS 它都是有优先级抢断 多线程的一些东西 然后有我们有 Scheduler 就是那个 Task 的调度机制 还有那个你可以有那个 kernel 就说我们甚至你可以裁减kernel 就是说 因为 TI-RTOS 它其实 它比一般的可能很多人用过 CE 那个东西要大一些 但是说功能更全一点 就说因为我们 因为我们就说 RTOS 会不停的更新 会有一些变化或怎么样 对吧 你们如果可以根据那个我们的那个更新之后 每次你可以重新安装然后可以看到它里面文档 什么东西加了什么减什么 修理什么bug 所以那 Zero-latency interrupts 就是那个 这其实也没有什么 我觉得这些东西都没有 本质上都没有什么特别 就是 RTOS 它当然会有一些中断处理 但因为大家都知道 有那个 RTOS 它无非就是调度 任务分配 然后那个各种切换 上下文切换 然后加那个 加一些什么 Timer 什么这些东西在里面 那这些都是其实都是 RTOS 的本质属性 所以我也在这里多说了 我想说的就是说是我们的那个这边 好 这两块是比较特殊的 就是因为针对我们TI的cc26 13 或者是那个3200的那个硬件 我们上面有很多外设嘛对吧 一般情况下大家拿到芯片之后 就是就拿到一颗芯片 比如说唉我用了其它的那个 自己原来有的 比如说Free RTOS 或者corse这些东西(9:08) 然后后来移到我们的 比如说移到自己的 MCU 上面 然后发现唉它可能不支持所有的 MCU 的一些驱动 它不可能支持那么多 每家都不一样 所以它就你就得 如果你要去调这些什么 GPIO 的驱动 或者UART SPI这个东西的时候 那你可能得又要去配寄存器什么什么 跟它那个 跟你的那个 MCU 的 Guide 的对吧 那个 Datasheet或者是那个 RTM 来 RTM 来 那 TI 做的是什么东西呢 就是我们在 RTOS 上面 因为这些芯片都是我们自己的 对吧 RTOS 也是我们自己 然后它会把所有的驱动都封装成 API 然后提 就是说提供出来 就比如说UART 等于叫 open 然后Read Write 这样就可以了 不要再定义寄存器 一开始就什么都不需要 可能就感觉有点像 Windows 编程那种 包括那个刚刚前面提过那个射频的一些 私有的一些指令 什么都是以 API 的形式在我们 TI-RTOS 里面 所以这个是比较方便很友好的界面 另外一点就是我们有那个 Power Management在里面 就是那个 TI-RTOS 里面 这个就是说是 因为是低功耗射频设备设备 所以这个东西尤其重要 在那个我们的那个 在我们的整个那个系统里面 所以大家有兴趣 就是这个可以去看一下 就是我们是怎么 因为我们有不同的那个 Power Mode 在不同 Power Mode 下面 我们这个 RTOS 它会自动 因为 RTOS 一直在运行 它会自动去切换 就是说打开关闭哪些外设 就是你可以预先设置 就是说你需要在某个模式下面 哪些外设还是工作的 哪些外设就不需要了对吧 然后你设置好之后 这个 RTOS 它会Power Management 它会自动帮你 那个在你运行过程中 就是到不同模块模式切换的时候 它就会进入不同的这种功耗模式 打开关闭某些设备外设什么这些东西 然后 CCS 里面我们提供了一个叫 System analyzer 其实也是 RTOS 的 要结合 TI- RTOS 可以看到的就说是这个比较重要 就也比较蛮好玩的就是你可以看相当于一个 你比如说你内存用了多少对某一个 Task 用多少 最峰值的时候用多少内存 平均用多少内存 什么类似这种东西可以去看一下 CCS 里面 TI 提供的工具 首先是我们 SmartRF Studio 这是一个 其实是一个通用的工具 它用 Sub-1G 上面可以用 然后用我们的那个 ZigBee BLE 都是可以用得上 然后跟原来的那个 SmartRF Studio 一样 现在是7 以前有6什么的一样 它就是说是它能有产生 那个能产生相关的那个 Code 的 你可以直接导到你工程里面去 然后就可以在那边配一下一些命令 这些以前是寄存器对吧 现在应该都是那个这些这个命令 就是 API 这么很简单很直观的设置频率 什么是 TX 模式 然后那个就是说 那个开始接收发送 这些东西都是在这边 很简单 那就是说这就是你设置好之后 它产生出了那个代码 也可以把它打到你们那个工程里面去 它会有 SmartRFstudio.c 文件 SmartRFstudio.h 很简单 Sensor Controller 跟那个26xx里面是一样的我们有 2K 的 SRAM 就是说它自己跑的 然后那个前面提到过的 8.2 uA/MHz 的那个运行 可以 就是可以32kHz 24MHz里面运行 它说是32kHz的话 效率比较低 因为我们的这个一般低功耗 低功耗射频设备里面都会有两个晶振对吧 一个32kHz的一个24MHz 32K就是RTC 24MHz的话 就是我们这个 Sensor Controller 它最好是在目前来看 是在24MHz下面运行的话是比较最好的 因为它效率高 然后很少时间就执行完了之后 就是那个功耗相对来说比较低 然后它可以进入这个睡眠模式 这样然后把其它事情丢给那个 M3 去处理 那效率会高 所以我们有一些 就是你下载完 Sensor Controller Studio这个工具之后呢 然后你打开 然后我们里面就有一些现成的一些 那个实例代码在那边 就说有 Motion Detector 就是你那个移动的 那个然后有那个 Capacitive touch的 那个我们忘了说 就是我们的那个2613都支持 Capacitive touch 那个代码 还有Proximity Sensor 还有什么加速器 还有那个 ADC 采集的一个数据 还有就是那个 Pulse counting 就是那个脉冲计数的实际代码 就其实都是很多都是跟 Sensor 是有关的 基本上都是跟Sensor有关的 应该 就在打开这个Sensor Controller Studio 你可以把这些实例工程导进去 然后看看其实就很简单 就一个开始设置 然后执行 然后结束了 就分这三段 我在这里不多不仔细讲 反正就你们看一下工程就知道了 然后就是它那个界面可以看到 你可以就是 open existing project 打开之后对吧 然后就可以看一下里面的一些东西 这是一个 Example 我们有的这些 就说 Capacitive touch ADC 采集这些在这边 那就说 TI 的13xx系列呢 就是还导入了一个叫做 Command Chaining的一个概念 这是什么东西呢 就原来我们的 像老的一些1110这些东西里面是没有这个东西的 这是干嘛呢 就是说是原来的话你可能要接收 要发送你的一个就是说去配那些那个命令 等待什么 到时候比方这个我们是一个就是命令链 我们叫做 所以叫做就是说你可以比如说每一个动作 比如说你设置频率 然后 RX 然后再等等什么什么 就你可以把这些命令 我们13xx它就提供了接口 可以 就是软件接口 就可以让你把这些命令串起来 就一个连一个 一个连一个 你可以 所以它可以让它去自动执行嘛 你就是设置完那个 frequence 之后 你就可以直接它会自动的 比如说你设计一个Timer 或者 Counter 然后什么时候进入 RX 它就把那个窗口打开 就等到那个对方数据过来 然后就相当于就是说 这个怎么说呢 在我的理解来看 就是说这样的话 就是说你类似于可以 像蓝牙一样定义自己的一个 Profile 相当于你可以定义一个 整个完整的就是两边的一个交互的数据流程 或者怎么样 对吧设置完之后 然后让 M3 去执行就可以了 就很简单去控制它怎么怎么样执行 所以这个的话 我们有一个就是等会儿 我可以给大家看 就是那个等会就会有一个slice 这边讲到这个 我们这个 command 的一个结构 一个结构里面它有一个比较重要的 就是一个 Next command pointer 就是就是连起整个就命令链的一个关键 就是你的这条命令 我里面有一个 pointer 是指向下一条命令的那个地址的是这样 然后会不会有一些 实际的例子可以给大家看 然后Start triggers 就是怎么样Start 你要 Delay execution呢 就是说 还是说是 就是还是就 Delay 相当于你用内部的一个 Timer 这种过一会去执行呢 还是说是外部的一个 比如说是 IO 触发它 开始执行整条命令 不是 执行一遍 也一样的 还有一个 End trigger 就是说你命令开始到整条命令链结束完 它是有一个 Time out 呢 还是说是有一个也是外部的一个可能 就是说事件触发里面 我不要说了 停止接收或停止发送这样一个东西 所以可以看 就是说接着往下看 就是这是个命令的一个架构 很重要的就是 Specific Data 就是命令的 这个命令的数据 这上面是命令的 Header 就是那个头 我们所有的那个刚才讲到了 什么 pointer 什么乱七八糟 都在这个头里面 就是头的那个情况 Command number ID number Status 就是其他的一些状态 关键就是说这个就是 pNextOp 这点 这个就是说是下一个要执行的指令 把它地址它放到这边 然后那个 Start Timer 就是那个什么时候去执行这个命令 然后 trigger 比如说它有各种trigger的 现在有TRIG_NOW NEVER ABSTIME 就是说跟前面那个设定是有关的 Absolute time 还是 relative time 它相对时间还是这种绝对时间 就是那个CPU系统里面的那些东西都 都可以这样跟着它去设 然后 condition 就说是就是那个状态嘛对吧 就是说你下一个指令 你是说是永远不执行或者说有 还是执行还是怎么样对吧 还是说在某一个状态下 它就停止命令这种 那具体的例子呢 其实这样的话就比较直观 首先就是说我们配置一个在那个 RX的一条指令 这是第一条命令 我们要执行那个命令 就是被 trigger 的命令 然后第二条命令就是 TX 命令 这是我们干嘛用呢 就是我们我们订一个类似于 比如私有的握手的一个协议 就是我发 就是私有握手协议 就是我先收一个数据 然后收一个收一包数据 然后再告诉对方 我就是收到这个数据 就是所以我先 RX 一下 然后再 TX 一下对吧 然后你可以就是然后把两头命令串起来 就是用那个pointer 然后那个我这边收到了 唉我觉得 RX 我觉得数据处理OK了 我就自动的发一个 TX 出去 中间可以判断 这个也是一样的 相对来的 就是说那个 TX 就是另外一端 我先发送 发送完了之后 我在这边启动一个 Timer 等嘛对吧 然后等 然后这都是 M0 里面的处理 M3 发给 M0 的那个事件那个命令 就是 M3比如发给 M0 TX 完了之后 M3 就睡觉了 然后 M0它就直接执行下面的东西 它就等着那个 RX RX收到数据之后它判断如果是正确的 它可能就是有事情要处理 它可以把 M3唤醒 如果不对它可以回到 TX 重发 就是完全你们自己就是可以定义的 那种相当于把这个下条指令之前的 Timer错过去了 可以那个自己定义的一个就是命令链 那这就是 Retry Counter 什么意思呢 就是前面的我们再加一步 就是说你不能总是 我没收到对方的 ack 可我在不停的重发 不停重发这种对吧 那我可以加个 Counter 那就我重发或者等待对方接收几次以后 我这我就停止 认为这个包是丢了或错了或怎么样对吧 所以一样的先 TX TX 完了之后 它指向下一条命令就是等待 RX 如果 Timer Out之后我就开始Count记一次 然后重新来 TX 再等 RX然后又没收到 然后再 count 到了一定次数之后我就停掉了 我就认为这个就不对了对吧 就是这样很简单 那就是这个就是另外一种情况 就是当然刚才我们说的可能 就是说是我没有设置 只设置了一个频段对吧 我们有多种频段 因为这完全是就是可以自己配置 你可以在一个频段上先设置 然后接收完 然后再设置另外一个可以呢再发送 这样都是命令链这样下去 你就先设置好 然后丢给 M0去处理 然后它收到了正确的 ack 之后再唤醒 M3 这样就是说达到我们这种低功耗的目的 不停的可以循环 你也可以这样执行完一次就结束了 其实就相当于我们 你可以想象就是因为我们 BLE 里面 BLE 里面就是跳频了嘛对吧 它每次发时候它接收发送完一个频段之后 它就会切换到下一个 我们有 Channel Map 对吧 我们知道下次应该跳到哪个 Channel上去 其实你也可以认为 其实 BLE 里面本质上做的是类似这种事情 当然其它 我们这边是 Sub-1G 的 就是 1GHz 以下的那个平台上面它这样做
私有模式就是我们的 就是我们有 TI 的有
因为有很多那个通讯的一些东西嘛
一些无线的一些产品
通讯的一些协议什么什么的
比如说像 BLE 那个802.15.4
什么 ZigBee 上面这些东西
还有就是一些私有的东西
那这个怎么说 在我们的13和26的那个架构里面
我们就是说都是可以支持这些东西
就是说对 M0 来讲 它是完全是 就是说是那个对它来讲
是一些射频的工作对吧
你上面一些跑一些不同的协议它不管
你只要把它配置成在哪个频段工作哪种模式去工作
然后上面就跑相应的协议就可以所以三方里面很多
都是一些私有的一些东西嘛对吧
有可能会跑6LoWPAN 其实就是这么一种架构
那边它是 那我们的底下的那个 M0
它是完全就是说支持这些模式 就很简单
然后这是我们13支持的所有的那个调试方式
有这么多
速度是可以从4.8到500 kbps
然后这是我们的那个带宽范围45K到4240K
4.2兆 4兆最大 然后那个Preamble
就是说你可以就前导码可以长度是可以自己那个设置的
然后那个同步字 0-64 bits
都是有一些特色 这个没有什么特别的其实
那就是可能早上也有人问过就是刚才就是我们
原来比如说我在用那个老的1101 1120 1200
这些东西做那个开发的时候已经有一些产品了
那我这个新的东西导入进去
它们会还会兼容 所以我们这边13的话
它是说是完全向下兼容 就是老我们老的这些产品
所以就被大家如果在11老的平台基础上
开发新的应用
其实来讲的话也不是不需要付出很多的
那个就是说代价嘛主要是向原来兼容的
TI 目前就是已经有的就是我们有 Smart RF06板子
看上去很像那个26的其实确实很像就长得是一样的
然后还有那个1310的那个 EVM 板
它们基本上是一样的
那唯一的特点不同的地方可能是说
天线可能有点不太一样 和2.4G
这上面它画对
就是大概这个样子 拿到的时候你可以看一下
就是应该有不同的天线设计跟 2.4G 是不一样
如果拿到跟2650 就是 BLE 一样的那个板子
那就说明 TI 给你们发错板子了
然后那个价格是跟那个一样的 也是299
因为可能底板比较贵吧
这个都是说 TI 官网上可以申请到
我们有1350 SensorTag
就是将来 1350 这一颗料
它同时支持就是说有 BLE 的功能
然后也有那个 Sub-1G 的东西
然后你可以就是说那 Sub-1G 的东西
你就不能直接用手机去看了 你跟另外的接收
然后可能另外一块 Sub-1G 的板接收之后
你用屏幕再看看它上面一些传感器的信息
然后它里面天线就我前面讲过
它会有两根天线 然后做 Switch
那个还有我们会有1310 1350的Launch Pad
就是那个火箭版的 所谓的发射板
它会有那个也会有 接下来会有那个量产
所以现在有的是这块 大家可以有兴趣去
如果要做的话就可以这个开始
我个人要推荐这种
因为为什么 因为它的 IO 接口比较全
这个就是跟早上类似的就是跟我讲26的时候也讲过
就是26的那个功耗嘛对吧 13也是一样的
因为架构是一样的 M3 M0
然后它也有 Standby Current
一样的就是0.65 uA
然后它 M3 在工作的时候是多少每兆
在48 MHz下面是多少
需要消耗多少电流全速跑的时候对吧
然后射频这边由于它那个发射功率不太一样
所以那个它的发射的时候稍微高一点
其它地方都是一样
就是那个13的那个可以看到
软件架构
TI也会提供相应的就是13xx 的 SDK
那么跟那个26不太一样 CCS IAR 看的都眼熟
然后也是一样 两个 会有两个工程
有 Application 有一个 Stack
这个Stack 你可以跑不同的 Stack
比如说你没关系 你可以私有的那个东西
当然也有 BLE BLE 的东西可以 然后上面可以跑
或者是 6LoWPAN 的Stack 对吧
然后那个 Application 就是你自己定义的一些东西
自己的这些应用什么传感器 怎么传数据什么这些
这都跟26的都是一样的 下面也是Lower Layers
RTOS 的 kernel RF的那个一些驱动
还是在那个 M3 的 Driver 里面 M3 的 ROM 里面
然后那个 RF 的实际操作的一些东西呢
是在 M0 里面是这样
这是 TI-RTOS
TI-RTOS呢 就是说在那个26 13
包括一会儿我们那个(人名)会讲
32里面 它其实都是有 都是存在的
以后 TI 的出来的无线产品里面都是带着 TI-RTOS
所以如果比如说你原来做过那个做了一个 CC26xx的
像我就是做 CC2640 做过比较熟的
然后我这个时候我再去做那个13
可能对我来讲很多接口都长得一样
特别是那些驱动的什么 UART SPI PWM
这些乱七八糟这些外设的东西
驱动一看 就是说接口跟原来一模一样的
包括整个
因为 RTOS 它运行的整个机制什么都是一样
所以如果你玩过其中一个的话 就玩其它的
就是你可能想玩了 BLE 以后
你又想去搞一下那个什么 Sub-1G
接了又想去玩下WiFi 3200
可能就会觉得很容易很方便
因为 TI 都是以 RTOS 的方式
提供一些开发软件接口 那这边也不多讲
反正就是一般的 RTOS 它都是有优先级抢断
多线程的一些东西 然后有我们有 Scheduler
就是那个 Task 的调度机制
还有那个你可以有那个 kernel
就说我们甚至你可以裁减kernel
就是说 因为 TI-RTOS 它其实
它比一般的可能很多人用过 CE
那个东西要大一些
但是说功能更全一点 就说因为我们
因为我们就说 RTOS 会不停的更新
会有一些变化或怎么样 对吧
你们如果可以根据那个我们的那个更新之后
每次你可以重新安装然后可以看到它里面文档
什么东西加了什么减什么 修理什么bug
所以那 Zero-latency interrupts
就是那个 这其实也没有什么
我觉得这些东西都没有 本质上都没有什么特别
就是 RTOS 它当然会有一些中断处理
但因为大家都知道 有那个 RTOS 它无非就是调度 任务分配
然后那个各种切换 上下文切换 然后加那个
加一些什么 Timer 什么这些东西在里面
那这些都是其实都是 RTOS 的本质属性
所以我也在这里多说了
我想说的就是说是我们的那个这边 好
这两块是比较特殊的 就是因为针对我们TI的cc26 13
或者是那个3200的那个硬件
我们上面有很多外设嘛对吧
一般情况下大家拿到芯片之后 就是就拿到一颗芯片
比如说唉我用了其它的那个
自己原来有的 比如说Free RTOS
或者corse这些东西(9:08)
然后后来移到我们的
比如说移到自己的 MCU 上面
然后发现唉它可能不支持所有的 MCU 的一些驱动
它不可能支持那么多 每家都不一样
所以它就你就得
如果你要去调这些什么 GPIO 的驱动
或者UART SPI这个东西的时候
那你可能得又要去配寄存器什么什么
跟它那个 跟你的那个 MCU 的 Guide 的对吧
那个 Datasheet或者是那个 RTM 来
RTM 来 那 TI 做的是什么东西呢
就是我们在 RTOS 上面
因为这些芯片都是我们自己的 对吧
RTOS 也是我们自己
然后它会把所有的驱动都封装成 API
然后提 就是说提供出来 就比如说UART
等于叫 open 然后Read Write 这样就可以了
不要再定义寄存器 一开始就什么都不需要
可能就感觉有点像 Windows 编程那种
包括那个刚刚前面提过那个射频的一些
私有的一些指令
什么都是以 API 的形式在我们 TI-RTOS 里面
所以这个是比较方便很友好的界面
另外一点就是我们有那个 Power Management在里面
就是那个 TI-RTOS 里面
这个就是说是 因为是低功耗射频设备设备
所以这个东西尤其重要 在那个我们的那个
在我们的整个那个系统里面
所以大家有兴趣 就是这个可以去看一下
就是我们是怎么
因为我们有不同的那个 Power Mode
在不同 Power Mode 下面
我们这个 RTOS 它会自动
因为 RTOS 一直在运行 它会自动去切换
就是说打开关闭哪些外设 就是你可以预先设置
就是说你需要在某个模式下面
哪些外设还是工作的 哪些外设就不需要了对吧
然后你设置好之后
这个 RTOS 它会Power Management
它会自动帮你 那个在你运行过程中
就是到不同模块模式切换的时候
它就会进入不同的这种功耗模式
打开关闭某些设备外设什么这些东西
然后 CCS 里面我们提供了一个叫 System analyzer
其实也是 RTOS 的
要结合 TI- RTOS 可以看到的就说是这个比较重要
就也比较蛮好玩的就是你可以看相当于一个
你比如说你内存用了多少对某一个 Task 用多少
最峰值的时候用多少内存 平均用多少内存
什么类似这种东西可以去看一下 CCS 里面
TI 提供的工具 首先是我们 SmartRF Studio
这是一个 其实是一个通用的工具
它用 Sub-1G 上面可以用
然后用我们的那个 ZigBee BLE 都是可以用得上
然后跟原来的那个 SmartRF Studio 一样
现在是7 以前有6什么的一样
它就是说是它能有产生
那个能产生相关的那个 Code 的
你可以直接导到你工程里面去
然后就可以在那边配一下一些命令
这些以前是寄存器对吧
现在应该都是那个这些这个命令
就是 API 这么很简单很直观的设置频率
什么是 TX 模式 然后那个就是说
那个开始接收发送 这些东西都是在这边 很简单
那就是说这就是你设置好之后
它产生出了那个代码
也可以把它打到你们那个工程里面去
它会有 SmartRFstudio.c 文件
SmartRFstudio.h 很简单 Sensor Controller
跟那个26xx里面是一样的我们有 2K 的 SRAM
就是说它自己跑的 然后那个前面提到过的
8.2 uA/MHz 的那个运行 可以
就是可以32kHz 24MHz里面运行
它说是32kHz的话 效率比较低
因为我们的这个一般低功耗
低功耗射频设备里面都会有两个晶振对吧
一个32kHz的一个24MHz
32K就是RTC 24MHz的话
就是我们这个 Sensor Controller
它最好是在目前来看
是在24MHz下面运行的话是比较最好的
因为它效率高
然后很少时间就执行完了之后
就是那个功耗相对来说比较低
然后它可以进入这个睡眠模式
这样然后把其它事情丢给那个 M3 去处理
那效率会高 所以我们有一些
就是你下载完 Sensor Controller Studio这个工具之后呢
然后你打开 然后我们里面就有一些现成的一些
那个实例代码在那边
就说有 Motion Detector
就是你那个移动的
那个然后有那个 Capacitive touch的
那个我们忘了说
就是我们的那个2613都支持 Capacitive touch
那个代码 还有Proximity Sensor 还有什么加速器
还有那个 ADC 采集的一个数据
还有就是那个 Pulse counting
就是那个脉冲计数的实际代码
就其实都是很多都是跟 Sensor 是有关的
基本上都是跟Sensor有关的 应该
就在打开这个Sensor Controller Studio
你可以把这些实例工程导进去
然后看看其实就很简单
就一个开始设置 然后执行 然后结束了
就分这三段 我在这里不多不仔细讲
反正就你们看一下工程就知道了
然后就是它那个界面可以看到
你可以就是 open existing project
打开之后对吧 然后就可以看一下里面的一些东西
这是一个 Example 我们有的这些
就说 Capacitive touch ADC 采集这些在这边
那就说 TI 的13xx系列呢
就是还导入了一个叫做 Command Chaining的一个概念
这是什么东西呢 就原来我们的
像老的一些1110这些东西里面是没有这个东西的
这是干嘛呢 就是说是原来的话你可能要接收
要发送你的一个就是说去配那些那个命令
等待什么 到时候比方这个我们是一个就是命令链
我们叫做 所以叫做就是说你可以比如说每一个动作
比如说你设置频率 然后 RX 然后再等等什么什么
就你可以把这些命令
我们13xx它就提供了接口 可以 就是软件接口
就可以让你把这些命令串起来 就一个连一个
一个连一个 你可以 所以它可以让它去自动执行嘛
你就是设置完那个 frequence 之后
你就可以直接它会自动的
比如说你设计一个Timer 或者 Counter
然后什么时候进入 RX 它就把那个窗口打开
就等到那个对方数据过来 然后就相当于就是说
这个怎么说呢 在我的理解来看
就是说这样的话 就是说你类似于可以
像蓝牙一样定义自己的一个 Profile
相当于你可以定义一个
整个完整的就是两边的一个交互的数据流程
或者怎么样 对吧设置完之后
然后让 M3 去执行就可以了
就很简单去控制它怎么怎么样执行
所以这个的话 我们有一个就是等会儿
我可以给大家看 就是那个等会就会有一个slice
这边讲到这个 我们这个 command 的一个结构
一个结构里面它有一个比较重要的
就是一个 Next command pointer
就是就是连起整个就命令链的一个关键
就是你的这条命令 我里面有一个 pointer
是指向下一条命令的那个地址的是这样
然后会不会有一些 实际的例子可以给大家看
然后Start triggers 就是怎么样Start
你要 Delay execution呢
就是说 还是说是 就是还是就 Delay
相当于你用内部的一个 Timer
这种过一会去执行呢 还是说是外部的一个
比如说是 IO 触发它 开始执行整条命令
不是 执行一遍 也一样的 还有一个 End trigger
就是说你命令开始到整条命令链结束完
它是有一个 Time out 呢
还是说是有一个也是外部的一个可能
就是说事件触发里面 我不要说了
停止接收或停止发送这样一个东西
所以可以看 就是说接着往下看
就是这是个命令的一个架构
很重要的就是 Specific Data 就是命令的
这个命令的数据 这上面是命令的 Header
就是那个头 我们所有的那个刚才讲到了
什么 pointer 什么乱七八糟
都在这个头里面 就是头的那个情况
Command number ID number Status 就是其他的一些状态
关键就是说这个就是 pNextOp
这点 这个就是说是下一个要执行的指令
把它地址它放到这边 然后那个 Start Timer
就是那个什么时候去执行这个命令
然后 trigger 比如说它有各种trigger的
现在有TRIG_NOW NEVER ABSTIME
就是说跟前面那个设定是有关的
Absolute time 还是 relative time
它相对时间还是这种绝对时间
就是那个CPU系统里面的那些东西都
都可以这样跟着它去设
然后 condition 就说是就是那个状态嘛对吧
就是说你下一个指令
你是说是永远不执行或者说有
还是执行还是怎么样对吧
还是说在某一个状态下
它就停止命令这种 那具体的例子呢
其实这样的话就比较直观
首先就是说我们配置一个在那个 RX的一条指令
这是第一条命令 我们要执行那个命令
就是被 trigger 的命令
然后第二条命令就是 TX 命令
这是我们干嘛用呢
就是我们我们订一个类似于
比如私有的握手的一个协议
就是我发 就是私有握手协议
就是我先收一个数据 然后收一个收一包数据
然后再告诉对方 我就是收到这个数据
就是所以我先 RX 一下 然后再 TX 一下对吧
然后你可以就是然后把两头命令串起来
就是用那个pointer 然后那个我这边收到了
唉我觉得 RX 我觉得数据处理OK了
我就自动的发一个 TX 出去 中间可以判断
这个也是一样的 相对来的 就是说那个 TX
就是另外一端 我先发送 发送完了之后
我在这边启动一个 Timer 等嘛对吧
然后等 然后这都是 M0 里面的处理
M3 发给 M0 的那个事件那个命令
就是 M3比如发给 M0 TX 完了之后
M3 就睡觉了 然后 M0它就直接执行下面的东西
它就等着那个 RX
RX收到数据之后它判断如果是正确的
它可能就是有事情要处理 它可以把 M3唤醒
如果不对它可以回到 TX 重发
就是完全你们自己就是可以定义的
那种相当于把这个下条指令之前的 Timer错过去了
可以那个自己定义的一个就是命令链
那这就是 Retry Counter 什么意思呢
就是前面的我们再加一步 就是说你不能总是
我没收到对方的 ack 可我在不停的重发
不停重发这种对吧 那我可以加个 Counter
那就我重发或者等待对方接收几次以后
我这我就停止
认为这个包是丢了或错了或怎么样对吧
所以一样的先 TX TX 完了之后
它指向下一条命令就是等待 RX
如果 Timer Out之后我就开始Count记一次
然后重新来 TX 再等 RX然后又没收到
然后再 count
到了一定次数之后我就停掉了
我就认为这个就不对了对吧
就是这样很简单 那就是这个就是另外一种情况
就是当然刚才我们说的可能 就是说是我没有设置
只设置了一个频段对吧 我们有多种频段
因为这完全是就是可以自己配置
你可以在一个频段上先设置
然后接收完 然后再设置另外一个可以呢再发送
这样都是命令链这样下去
你就先设置好 然后丢给 M0去处理
然后它收到了正确的 ack 之后再唤醒 M3
这样就是说达到我们这种低功耗的目的
不停的可以循环
你也可以这样执行完一次就结束了
其实就相当于我们
你可以想象就是因为我们 BLE 里面
BLE 里面就是跳频了嘛对吧
它每次发时候它接收发送完一个频段之后
它就会切换到下一个 我们有 Channel Map 对吧
我们知道下次应该跳到哪个 Channel上去
其实你也可以认为
其实 BLE 里面本质上做的是类似这种事情
当然其它 我们这边是 Sub-1G 的
就是 1GHz 以下的那个平台上面它这样做
私有模式就是我们的 就是我们有 TI 的有 因为有很多那个通讯的一些东西嘛 一些无线的一些产品 通讯的一些协议什么什么的 比如说像 BLE 那个802.15.4 什么 ZigBee 上面这些东西 还有就是一些私有的东西 那这个怎么说 在我们的13和26的那个架构里面 我们就是说都是可以支持这些东西 就是说对 M0 来讲 它是完全是 就是说是那个对它来讲 是一些射频的工作对吧 你上面一些跑一些不同的协议它不管 你只要把它配置成在哪个频段工作哪种模式去工作 然后上面就跑相应的协议就可以所以三方里面很多 都是一些私有的一些东西嘛对吧 有可能会跑6LoWPAN 其实就是这么一种架构 那边它是 那我们的底下的那个 M0 它是完全就是说支持这些模式 就很简单 然后这是我们13支持的所有的那个调试方式 有这么多 速度是可以从4.8到500 kbps 然后这是我们的那个带宽范围45K到4240K 4.2兆 4兆最大 然后那个Preamble 就是说你可以就前导码可以长度是可以自己那个设置的 然后那个同步字 0-64 bits 都是有一些特色 这个没有什么特别的其实 那就是可能早上也有人问过就是刚才就是我们 原来比如说我在用那个老的1101 1120 1200 这些东西做那个开发的时候已经有一些产品了 那我这个新的东西导入进去 它们会还会兼容 所以我们这边13的话 它是说是完全向下兼容 就是老我们老的这些产品 所以就被大家如果在11老的平台基础上 开发新的应用 其实来讲的话也不是不需要付出很多的 那个就是说代价嘛主要是向原来兼容的 TI 目前就是已经有的就是我们有 Smart RF06板子 看上去很像那个26的其实确实很像就长得是一样的 然后还有那个1310的那个 EVM 板 它们基本上是一样的 那唯一的特点不同的地方可能是说 天线可能有点不太一样 和2.4G 这上面它画对 就是大概这个样子 拿到的时候你可以看一下 就是应该有不同的天线设计跟 2.4G 是不一样 如果拿到跟2650 就是 BLE 一样的那个板子 那就说明 TI 给你们发错板子了 然后那个价格是跟那个一样的 也是299 因为可能底板比较贵吧 这个都是说 TI 官网上可以申请到 我们有1350 SensorTag 就是将来 1350 这一颗料 它同时支持就是说有 BLE 的功能 然后也有那个 Sub-1G 的东西 然后你可以就是说那 Sub-1G 的东西 你就不能直接用手机去看了 你跟另外的接收 然后可能另外一块 Sub-1G 的板接收之后 你用屏幕再看看它上面一些传感器的信息 然后它里面天线就我前面讲过 它会有两根天线 然后做 Switch 那个还有我们会有1310 1350的Launch Pad 就是那个火箭版的 所谓的发射板 它会有那个也会有 接下来会有那个量产 所以现在有的是这块 大家可以有兴趣去 如果要做的话就可以这个开始 我个人要推荐这种 因为为什么 因为它的 IO 接口比较全 这个就是跟早上类似的就是跟我讲26的时候也讲过 就是26的那个功耗嘛对吧 13也是一样的 因为架构是一样的 M3 M0 然后它也有 Standby Current 一样的就是0.65 uA 然后它 M3 在工作的时候是多少每兆 在48 MHz下面是多少 需要消耗多少电流全速跑的时候对吧 然后射频这边由于它那个发射功率不太一样 所以那个它的发射的时候稍微高一点 其它地方都是一样 就是那个13的那个可以看到 软件架构 TI也会提供相应的就是13xx 的 SDK 那么跟那个26不太一样 CCS IAR 看的都眼熟 然后也是一样 两个 会有两个工程 有 Application 有一个 Stack 这个Stack 你可以跑不同的 Stack 比如说你没关系 你可以私有的那个东西 当然也有 BLE BLE 的东西可以 然后上面可以跑 或者是 6LoWPAN 的Stack 对吧 然后那个 Application 就是你自己定义的一些东西 自己的这些应用什么传感器 怎么传数据什么这些 这都跟26的都是一样的 下面也是Lower Layers RTOS 的 kernel RF的那个一些驱动 还是在那个 M3 的 Driver 里面 M3 的 ROM 里面 然后那个 RF 的实际操作的一些东西呢 是在 M0 里面是这样 这是 TI-RTOS TI-RTOS呢 就是说在那个26 13 包括一会儿我们那个(人名)会讲 32里面 它其实都是有 都是存在的 以后 TI 的出来的无线产品里面都是带着 TI-RTOS 所以如果比如说你原来做过那个做了一个 CC26xx的 像我就是做 CC2640 做过比较熟的 然后我这个时候我再去做那个13 可能对我来讲很多接口都长得一样 特别是那些驱动的什么 UART SPI PWM 这些乱七八糟这些外设的东西 驱动一看 就是说接口跟原来一模一样的 包括整个 因为 RTOS 它运行的整个机制什么都是一样 所以如果你玩过其中一个的话 就玩其它的 就是你可能想玩了 BLE 以后 你又想去搞一下那个什么 Sub-1G 接了又想去玩下WiFi 3200 可能就会觉得很容易很方便 因为 TI 都是以 RTOS 的方式 提供一些开发软件接口 那这边也不多讲 反正就是一般的 RTOS 它都是有优先级抢断 多线程的一些东西 然后有我们有 Scheduler 就是那个 Task 的调度机制 还有那个你可以有那个 kernel 就说我们甚至你可以裁减kernel 就是说 因为 TI-RTOS 它其实 它比一般的可能很多人用过 CE 那个东西要大一些 但是说功能更全一点 就说因为我们 因为我们就说 RTOS 会不停的更新 会有一些变化或怎么样 对吧 你们如果可以根据那个我们的那个更新之后 每次你可以重新安装然后可以看到它里面文档 什么东西加了什么减什么 修理什么bug 所以那 Zero-latency interrupts 就是那个 这其实也没有什么 我觉得这些东西都没有 本质上都没有什么特别 就是 RTOS 它当然会有一些中断处理 但因为大家都知道 有那个 RTOS 它无非就是调度 任务分配 然后那个各种切换 上下文切换 然后加那个 加一些什么 Timer 什么这些东西在里面 那这些都是其实都是 RTOS 的本质属性 所以我也在这里多说了 我想说的就是说是我们的那个这边 好 这两块是比较特殊的 就是因为针对我们TI的cc26 13 或者是那个3200的那个硬件 我们上面有很多外设嘛对吧 一般情况下大家拿到芯片之后 就是就拿到一颗芯片 比如说唉我用了其它的那个 自己原来有的 比如说Free RTOS 或者corse这些东西(9:08) 然后后来移到我们的 比如说移到自己的 MCU 上面 然后发现唉它可能不支持所有的 MCU 的一些驱动 它不可能支持那么多 每家都不一样 所以它就你就得 如果你要去调这些什么 GPIO 的驱动 或者UART SPI这个东西的时候 那你可能得又要去配寄存器什么什么 跟它那个 跟你的那个 MCU 的 Guide 的对吧 那个 Datasheet或者是那个 RTM 来 RTM 来 那 TI 做的是什么东西呢 就是我们在 RTOS 上面 因为这些芯片都是我们自己的 对吧 RTOS 也是我们自己 然后它会把所有的驱动都封装成 API 然后提 就是说提供出来 就比如说UART 等于叫 open 然后Read Write 这样就可以了 不要再定义寄存器 一开始就什么都不需要 可能就感觉有点像 Windows 编程那种 包括那个刚刚前面提过那个射频的一些 私有的一些指令 什么都是以 API 的形式在我们 TI-RTOS 里面 所以这个是比较方便很友好的界面 另外一点就是我们有那个 Power Management在里面 就是那个 TI-RTOS 里面 这个就是说是 因为是低功耗射频设备设备 所以这个东西尤其重要 在那个我们的那个 在我们的整个那个系统里面 所以大家有兴趣 就是这个可以去看一下 就是我们是怎么 因为我们有不同的那个 Power Mode 在不同 Power Mode 下面 我们这个 RTOS 它会自动 因为 RTOS 一直在运行 它会自动去切换 就是说打开关闭哪些外设 就是你可以预先设置 就是说你需要在某个模式下面 哪些外设还是工作的 哪些外设就不需要了对吧 然后你设置好之后 这个 RTOS 它会Power Management 它会自动帮你 那个在你运行过程中 就是到不同模块模式切换的时候 它就会进入不同的这种功耗模式 打开关闭某些设备外设什么这些东西 然后 CCS 里面我们提供了一个叫 System analyzer 其实也是 RTOS 的 要结合 TI- RTOS 可以看到的就说是这个比较重要 就也比较蛮好玩的就是你可以看相当于一个 你比如说你内存用了多少对某一个 Task 用多少 最峰值的时候用多少内存 平均用多少内存 什么类似这种东西可以去看一下 CCS 里面 TI 提供的工具 首先是我们 SmartRF Studio 这是一个 其实是一个通用的工具 它用 Sub-1G 上面可以用 然后用我们的那个 ZigBee BLE 都是可以用得上 然后跟原来的那个 SmartRF Studio 一样 现在是7 以前有6什么的一样 它就是说是它能有产生 那个能产生相关的那个 Code 的 你可以直接导到你工程里面去 然后就可以在那边配一下一些命令 这些以前是寄存器对吧 现在应该都是那个这些这个命令 就是 API 这么很简单很直观的设置频率 什么是 TX 模式 然后那个就是说 那个开始接收发送 这些东西都是在这边 很简单 那就是说这就是你设置好之后 它产生出了那个代码 也可以把它打到你们那个工程里面去 它会有 SmartRFstudio.c 文件 SmartRFstudio.h 很简单 Sensor Controller 跟那个26xx里面是一样的我们有 2K 的 SRAM 就是说它自己跑的 然后那个前面提到过的 8.2 uA/MHz 的那个运行 可以 就是可以32kHz 24MHz里面运行 它说是32kHz的话 效率比较低 因为我们的这个一般低功耗 低功耗射频设备里面都会有两个晶振对吧 一个32kHz的一个24MHz 32K就是RTC 24MHz的话 就是我们这个 Sensor Controller 它最好是在目前来看 是在24MHz下面运行的话是比较最好的 因为它效率高 然后很少时间就执行完了之后 就是那个功耗相对来说比较低 然后它可以进入这个睡眠模式 这样然后把其它事情丢给那个 M3 去处理 那效率会高 所以我们有一些 就是你下载完 Sensor Controller Studio这个工具之后呢 然后你打开 然后我们里面就有一些现成的一些 那个实例代码在那边 就说有 Motion Detector 就是你那个移动的 那个然后有那个 Capacitive touch的 那个我们忘了说 就是我们的那个2613都支持 Capacitive touch 那个代码 还有Proximity Sensor 还有什么加速器 还有那个 ADC 采集的一个数据 还有就是那个 Pulse counting 就是那个脉冲计数的实际代码 就其实都是很多都是跟 Sensor 是有关的 基本上都是跟Sensor有关的 应该 就在打开这个Sensor Controller Studio 你可以把这些实例工程导进去 然后看看其实就很简单 就一个开始设置 然后执行 然后结束了 就分这三段 我在这里不多不仔细讲 反正就你们看一下工程就知道了 然后就是它那个界面可以看到 你可以就是 open existing project 打开之后对吧 然后就可以看一下里面的一些东西 这是一个 Example 我们有的这些 就说 Capacitive touch ADC 采集这些在这边 那就说 TI 的13xx系列呢 就是还导入了一个叫做 Command Chaining的一个概念 这是什么东西呢 就原来我们的 像老的一些1110这些东西里面是没有这个东西的 这是干嘛呢 就是说是原来的话你可能要接收 要发送你的一个就是说去配那些那个命令 等待什么 到时候比方这个我们是一个就是命令链 我们叫做 所以叫做就是说你可以比如说每一个动作 比如说你设置频率 然后 RX 然后再等等什么什么 就你可以把这些命令 我们13xx它就提供了接口 可以 就是软件接口 就可以让你把这些命令串起来 就一个连一个 一个连一个 你可以 所以它可以让它去自动执行嘛 你就是设置完那个 frequence 之后 你就可以直接它会自动的 比如说你设计一个Timer 或者 Counter 然后什么时候进入 RX 它就把那个窗口打开 就等到那个对方数据过来 然后就相当于就是说 这个怎么说呢 在我的理解来看 就是说这样的话 就是说你类似于可以 像蓝牙一样定义自己的一个 Profile 相当于你可以定义一个 整个完整的就是两边的一个交互的数据流程 或者怎么样 对吧设置完之后 然后让 M3 去执行就可以了 就很简单去控制它怎么怎么样执行 所以这个的话 我们有一个就是等会儿 我可以给大家看 就是那个等会就会有一个slice 这边讲到这个 我们这个 command 的一个结构 一个结构里面它有一个比较重要的 就是一个 Next command pointer 就是就是连起整个就命令链的一个关键 就是你的这条命令 我里面有一个 pointer 是指向下一条命令的那个地址的是这样 然后会不会有一些 实际的例子可以给大家看 然后Start triggers 就是怎么样Start 你要 Delay execution呢 就是说 还是说是 就是还是就 Delay 相当于你用内部的一个 Timer 这种过一会去执行呢 还是说是外部的一个 比如说是 IO 触发它 开始执行整条命令 不是 执行一遍 也一样的 还有一个 End trigger 就是说你命令开始到整条命令链结束完 它是有一个 Time out 呢 还是说是有一个也是外部的一个可能 就是说事件触发里面 我不要说了 停止接收或停止发送这样一个东西 所以可以看 就是说接着往下看 就是这是个命令的一个架构 很重要的就是 Specific Data 就是命令的 这个命令的数据 这上面是命令的 Header 就是那个头 我们所有的那个刚才讲到了 什么 pointer 什么乱七八糟 都在这个头里面 就是头的那个情况 Command number ID number Status 就是其他的一些状态 关键就是说这个就是 pNextOp 这点 这个就是说是下一个要执行的指令 把它地址它放到这边 然后那个 Start Timer 就是那个什么时候去执行这个命令 然后 trigger 比如说它有各种trigger的 现在有TRIG_NOW NEVER ABSTIME 就是说跟前面那个设定是有关的 Absolute time 还是 relative time 它相对时间还是这种绝对时间 就是那个CPU系统里面的那些东西都 都可以这样跟着它去设 然后 condition 就说是就是那个状态嘛对吧 就是说你下一个指令 你是说是永远不执行或者说有 还是执行还是怎么样对吧 还是说在某一个状态下 它就停止命令这种 那具体的例子呢 其实这样的话就比较直观 首先就是说我们配置一个在那个 RX的一条指令 这是第一条命令 我们要执行那个命令 就是被 trigger 的命令 然后第二条命令就是 TX 命令 这是我们干嘛用呢 就是我们我们订一个类似于 比如私有的握手的一个协议 就是我发 就是私有握手协议 就是我先收一个数据 然后收一个收一包数据 然后再告诉对方 我就是收到这个数据 就是所以我先 RX 一下 然后再 TX 一下对吧 然后你可以就是然后把两头命令串起来 就是用那个pointer 然后那个我这边收到了 唉我觉得 RX 我觉得数据处理OK了 我就自动的发一个 TX 出去 中间可以判断 这个也是一样的 相对来的 就是说那个 TX 就是另外一端 我先发送 发送完了之后 我在这边启动一个 Timer 等嘛对吧 然后等 然后这都是 M0 里面的处理 M3 发给 M0 的那个事件那个命令 就是 M3比如发给 M0 TX 完了之后 M3 就睡觉了 然后 M0它就直接执行下面的东西 它就等着那个 RX RX收到数据之后它判断如果是正确的 它可能就是有事情要处理 它可以把 M3唤醒 如果不对它可以回到 TX 重发 就是完全你们自己就是可以定义的 那种相当于把这个下条指令之前的 Timer错过去了 可以那个自己定义的一个就是命令链 那这就是 Retry Counter 什么意思呢 就是前面的我们再加一步 就是说你不能总是 我没收到对方的 ack 可我在不停的重发 不停重发这种对吧 那我可以加个 Counter 那就我重发或者等待对方接收几次以后 我这我就停止 认为这个包是丢了或错了或怎么样对吧 所以一样的先 TX TX 完了之后 它指向下一条命令就是等待 RX 如果 Timer Out之后我就开始Count记一次 然后重新来 TX 再等 RX然后又没收到 然后再 count 到了一定次数之后我就停掉了 我就认为这个就不对了对吧 就是这样很简单 那就是这个就是另外一种情况 就是当然刚才我们说的可能 就是说是我没有设置 只设置了一个频段对吧 我们有多种频段 因为这完全是就是可以自己配置 你可以在一个频段上先设置 然后接收完 然后再设置另外一个可以呢再发送 这样都是命令链这样下去 你就先设置好 然后丢给 M0去处理 然后它收到了正确的 ack 之后再唤醒 M3 这样就是说达到我们这种低功耗的目的 不停的可以循环 你也可以这样执行完一次就结束了 其实就相当于我们 你可以想象就是因为我们 BLE 里面 BLE 里面就是跳频了嘛对吧 它每次发时候它接收发送完一个频段之后 它就会切换到下一个 我们有 Channel Map 对吧 我们知道下次应该跳到哪个 Channel上去 其实你也可以认为 其实 BLE 里面本质上做的是类似这种事情 当然其它 我们这边是 Sub-1G 的 就是 1GHz 以下的那个平台上面它这样做
私有模式就是我们的 就是我们有 TI 的有
因为有很多那个通讯的一些东西嘛
一些无线的一些产品
通讯的一些协议什么什么的
比如说像 BLE 那个802.15.4
什么 ZigBee 上面这些东西
还有就是一些私有的东西
那这个怎么说 在我们的13和26的那个架构里面
我们就是说都是可以支持这些东西
就是说对 M0 来讲 它是完全是 就是说是那个对它来讲
是一些射频的工作对吧
你上面一些跑一些不同的协议它不管
你只要把它配置成在哪个频段工作哪种模式去工作
然后上面就跑相应的协议就可以所以三方里面很多
都是一些私有的一些东西嘛对吧
有可能会跑6LoWPAN 其实就是这么一种架构
那边它是 那我们的底下的那个 M0
它是完全就是说支持这些模式 就很简单
然后这是我们13支持的所有的那个调试方式
有这么多
速度是可以从4.8到500 kbps
然后这是我们的那个带宽范围45K到4240K
4.2兆 4兆最大 然后那个Preamble
就是说你可以就前导码可以长度是可以自己那个设置的
然后那个同步字 0-64 bits
都是有一些特色 这个没有什么特别的其实
那就是可能早上也有人问过就是刚才就是我们
原来比如说我在用那个老的1101 1120 1200
这些东西做那个开发的时候已经有一些产品了
那我这个新的东西导入进去
它们会还会兼容 所以我们这边13的话
它是说是完全向下兼容 就是老我们老的这些产品
所以就被大家如果在11老的平台基础上
开发新的应用
其实来讲的话也不是不需要付出很多的
那个就是说代价嘛主要是向原来兼容的
TI 目前就是已经有的就是我们有 Smart RF06板子
看上去很像那个26的其实确实很像就长得是一样的
然后还有那个1310的那个 EVM 板
它们基本上是一样的
那唯一的特点不同的地方可能是说
天线可能有点不太一样 和2.4G
这上面它画对
就是大概这个样子 拿到的时候你可以看一下
就是应该有不同的天线设计跟 2.4G 是不一样
如果拿到跟2650 就是 BLE 一样的那个板子
那就说明 TI 给你们发错板子了
然后那个价格是跟那个一样的 也是299
因为可能底板比较贵吧
这个都是说 TI 官网上可以申请到
我们有1350 SensorTag
就是将来 1350 这一颗料
它同时支持就是说有 BLE 的功能
然后也有那个 Sub-1G 的东西
然后你可以就是说那 Sub-1G 的东西
你就不能直接用手机去看了 你跟另外的接收
然后可能另外一块 Sub-1G 的板接收之后
你用屏幕再看看它上面一些传感器的信息
然后它里面天线就我前面讲过
它会有两根天线 然后做 Switch
那个还有我们会有1310 1350的Launch Pad
就是那个火箭版的 所谓的发射板
它会有那个也会有 接下来会有那个量产
所以现在有的是这块 大家可以有兴趣去
如果要做的话就可以这个开始
我个人要推荐这种
因为为什么 因为它的 IO 接口比较全
这个就是跟早上类似的就是跟我讲26的时候也讲过
就是26的那个功耗嘛对吧 13也是一样的
因为架构是一样的 M3 M0
然后它也有 Standby Current
一样的就是0.65 uA
然后它 M3 在工作的时候是多少每兆
在48 MHz下面是多少
需要消耗多少电流全速跑的时候对吧
然后射频这边由于它那个发射功率不太一样
所以那个它的发射的时候稍微高一点
其它地方都是一样
就是那个13的那个可以看到
软件架构
TI也会提供相应的就是13xx 的 SDK
那么跟那个26不太一样 CCS IAR 看的都眼熟
然后也是一样 两个 会有两个工程
有 Application 有一个 Stack
这个Stack 你可以跑不同的 Stack
比如说你没关系 你可以私有的那个东西
当然也有 BLE BLE 的东西可以 然后上面可以跑
或者是 6LoWPAN 的Stack 对吧
然后那个 Application 就是你自己定义的一些东西
自己的这些应用什么传感器 怎么传数据什么这些
这都跟26的都是一样的 下面也是Lower Layers
RTOS 的 kernel RF的那个一些驱动
还是在那个 M3 的 Driver 里面 M3 的 ROM 里面
然后那个 RF 的实际操作的一些东西呢
是在 M0 里面是这样
这是 TI-RTOS
TI-RTOS呢 就是说在那个26 13
包括一会儿我们那个(人名)会讲
32里面 它其实都是有 都是存在的
以后 TI 的出来的无线产品里面都是带着 TI-RTOS
所以如果比如说你原来做过那个做了一个 CC26xx的
像我就是做 CC2640 做过比较熟的
然后我这个时候我再去做那个13
可能对我来讲很多接口都长得一样
特别是那些驱动的什么 UART SPI PWM
这些乱七八糟这些外设的东西
驱动一看 就是说接口跟原来一模一样的
包括整个
因为 RTOS 它运行的整个机制什么都是一样
所以如果你玩过其中一个的话 就玩其它的
就是你可能想玩了 BLE 以后
你又想去搞一下那个什么 Sub-1G
接了又想去玩下WiFi 3200
可能就会觉得很容易很方便
因为 TI 都是以 RTOS 的方式
提供一些开发软件接口 那这边也不多讲
反正就是一般的 RTOS 它都是有优先级抢断
多线程的一些东西 然后有我们有 Scheduler
就是那个 Task 的调度机制
还有那个你可以有那个 kernel
就说我们甚至你可以裁减kernel
就是说 因为 TI-RTOS 它其实
它比一般的可能很多人用过 CE
那个东西要大一些
但是说功能更全一点 就说因为我们
因为我们就说 RTOS 会不停的更新
会有一些变化或怎么样 对吧
你们如果可以根据那个我们的那个更新之后
每次你可以重新安装然后可以看到它里面文档
什么东西加了什么减什么 修理什么bug
所以那 Zero-latency interrupts
就是那个 这其实也没有什么
我觉得这些东西都没有 本质上都没有什么特别
就是 RTOS 它当然会有一些中断处理
但因为大家都知道 有那个 RTOS 它无非就是调度 任务分配
然后那个各种切换 上下文切换 然后加那个
加一些什么 Timer 什么这些东西在里面
那这些都是其实都是 RTOS 的本质属性
所以我也在这里多说了
我想说的就是说是我们的那个这边 好
这两块是比较特殊的 就是因为针对我们TI的cc26 13
或者是那个3200的那个硬件
我们上面有很多外设嘛对吧
一般情况下大家拿到芯片之后 就是就拿到一颗芯片
比如说唉我用了其它的那个
自己原来有的 比如说Free RTOS
或者corse这些东西(9:08)
然后后来移到我们的
比如说移到自己的 MCU 上面
然后发现唉它可能不支持所有的 MCU 的一些驱动
它不可能支持那么多 每家都不一样
所以它就你就得
如果你要去调这些什么 GPIO 的驱动
或者UART SPI这个东西的时候
那你可能得又要去配寄存器什么什么
跟它那个 跟你的那个 MCU 的 Guide 的对吧
那个 Datasheet或者是那个 RTM 来
RTM 来 那 TI 做的是什么东西呢
就是我们在 RTOS 上面
因为这些芯片都是我们自己的 对吧
RTOS 也是我们自己
然后它会把所有的驱动都封装成 API
然后提 就是说提供出来 就比如说UART
等于叫 open 然后Read Write 这样就可以了
不要再定义寄存器 一开始就什么都不需要
可能就感觉有点像 Windows 编程那种
包括那个刚刚前面提过那个射频的一些
私有的一些指令
什么都是以 API 的形式在我们 TI-RTOS 里面
所以这个是比较方便很友好的界面
另外一点就是我们有那个 Power Management在里面
就是那个 TI-RTOS 里面
这个就是说是 因为是低功耗射频设备设备
所以这个东西尤其重要 在那个我们的那个
在我们的整个那个系统里面
所以大家有兴趣 就是这个可以去看一下
就是我们是怎么
因为我们有不同的那个 Power Mode
在不同 Power Mode 下面
我们这个 RTOS 它会自动
因为 RTOS 一直在运行 它会自动去切换
就是说打开关闭哪些外设 就是你可以预先设置
就是说你需要在某个模式下面
哪些外设还是工作的 哪些外设就不需要了对吧
然后你设置好之后
这个 RTOS 它会Power Management
它会自动帮你 那个在你运行过程中
就是到不同模块模式切换的时候
它就会进入不同的这种功耗模式
打开关闭某些设备外设什么这些东西
然后 CCS 里面我们提供了一个叫 System analyzer
其实也是 RTOS 的
要结合 TI- RTOS 可以看到的就说是这个比较重要
就也比较蛮好玩的就是你可以看相当于一个
你比如说你内存用了多少对某一个 Task 用多少
最峰值的时候用多少内存 平均用多少内存
什么类似这种东西可以去看一下 CCS 里面
TI 提供的工具 首先是我们 SmartRF Studio
这是一个 其实是一个通用的工具
它用 Sub-1G 上面可以用
然后用我们的那个 ZigBee BLE 都是可以用得上
然后跟原来的那个 SmartRF Studio 一样
现在是7 以前有6什么的一样
它就是说是它能有产生
那个能产生相关的那个 Code 的
你可以直接导到你工程里面去
然后就可以在那边配一下一些命令
这些以前是寄存器对吧
现在应该都是那个这些这个命令
就是 API 这么很简单很直观的设置频率
什么是 TX 模式 然后那个就是说
那个开始接收发送 这些东西都是在这边 很简单
那就是说这就是你设置好之后
它产生出了那个代码
也可以把它打到你们那个工程里面去
它会有 SmartRFstudio.c 文件
SmartRFstudio.h 很简单 Sensor Controller
跟那个26xx里面是一样的我们有 2K 的 SRAM
就是说它自己跑的 然后那个前面提到过的
8.2 uA/MHz 的那个运行 可以
就是可以32kHz 24MHz里面运行
它说是32kHz的话 效率比较低
因为我们的这个一般低功耗
低功耗射频设备里面都会有两个晶振对吧
一个32kHz的一个24MHz
32K就是RTC 24MHz的话
就是我们这个 Sensor Controller
它最好是在目前来看
是在24MHz下面运行的话是比较最好的
因为它效率高
然后很少时间就执行完了之后
就是那个功耗相对来说比较低
然后它可以进入这个睡眠模式
这样然后把其它事情丢给那个 M3 去处理
那效率会高 所以我们有一些
就是你下载完 Sensor Controller Studio这个工具之后呢
然后你打开 然后我们里面就有一些现成的一些
那个实例代码在那边
就说有 Motion Detector
就是你那个移动的
那个然后有那个 Capacitive touch的
那个我们忘了说
就是我们的那个2613都支持 Capacitive touch
那个代码 还有Proximity Sensor 还有什么加速器
还有那个 ADC 采集的一个数据
还有就是那个 Pulse counting
就是那个脉冲计数的实际代码
就其实都是很多都是跟 Sensor 是有关的
基本上都是跟Sensor有关的 应该
就在打开这个Sensor Controller Studio
你可以把这些实例工程导进去
然后看看其实就很简单
就一个开始设置 然后执行 然后结束了
就分这三段 我在这里不多不仔细讲
反正就你们看一下工程就知道了
然后就是它那个界面可以看到
你可以就是 open existing project
打开之后对吧 然后就可以看一下里面的一些东西
这是一个 Example 我们有的这些
就说 Capacitive touch ADC 采集这些在这边
那就说 TI 的13xx系列呢
就是还导入了一个叫做 Command Chaining的一个概念
这是什么东西呢 就原来我们的
像老的一些1110这些东西里面是没有这个东西的
这是干嘛呢 就是说是原来的话你可能要接收
要发送你的一个就是说去配那些那个命令
等待什么 到时候比方这个我们是一个就是命令链
我们叫做 所以叫做就是说你可以比如说每一个动作
比如说你设置频率 然后 RX 然后再等等什么什么
就你可以把这些命令
我们13xx它就提供了接口 可以 就是软件接口
就可以让你把这些命令串起来 就一个连一个
一个连一个 你可以 所以它可以让它去自动执行嘛
你就是设置完那个 frequence 之后
你就可以直接它会自动的
比如说你设计一个Timer 或者 Counter
然后什么时候进入 RX 它就把那个窗口打开
就等到那个对方数据过来 然后就相当于就是说
这个怎么说呢 在我的理解来看
就是说这样的话 就是说你类似于可以
像蓝牙一样定义自己的一个 Profile
相当于你可以定义一个
整个完整的就是两边的一个交互的数据流程
或者怎么样 对吧设置完之后
然后让 M3 去执行就可以了
就很简单去控制它怎么怎么样执行
所以这个的话 我们有一个就是等会儿
我可以给大家看 就是那个等会就会有一个slice
这边讲到这个 我们这个 command 的一个结构
一个结构里面它有一个比较重要的
就是一个 Next command pointer
就是就是连起整个就命令链的一个关键
就是你的这条命令 我里面有一个 pointer
是指向下一条命令的那个地址的是这样
然后会不会有一些 实际的例子可以给大家看
然后Start triggers 就是怎么样Start
你要 Delay execution呢
就是说 还是说是 就是还是就 Delay
相当于你用内部的一个 Timer
这种过一会去执行呢 还是说是外部的一个
比如说是 IO 触发它 开始执行整条命令
不是 执行一遍 也一样的 还有一个 End trigger
就是说你命令开始到整条命令链结束完
它是有一个 Time out 呢
还是说是有一个也是外部的一个可能
就是说事件触发里面 我不要说了
停止接收或停止发送这样一个东西
所以可以看 就是说接着往下看
就是这是个命令的一个架构
很重要的就是 Specific Data 就是命令的
这个命令的数据 这上面是命令的 Header
就是那个头 我们所有的那个刚才讲到了
什么 pointer 什么乱七八糟
都在这个头里面 就是头的那个情况
Command number ID number Status 就是其他的一些状态
关键就是说这个就是 pNextOp
这点 这个就是说是下一个要执行的指令
把它地址它放到这边 然后那个 Start Timer
就是那个什么时候去执行这个命令
然后 trigger 比如说它有各种trigger的
现在有TRIG_NOW NEVER ABSTIME
就是说跟前面那个设定是有关的
Absolute time 还是 relative time
它相对时间还是这种绝对时间
就是那个CPU系统里面的那些东西都
都可以这样跟着它去设
然后 condition 就说是就是那个状态嘛对吧
就是说你下一个指令
你是说是永远不执行或者说有
还是执行还是怎么样对吧
还是说在某一个状态下
它就停止命令这种 那具体的例子呢
其实这样的话就比较直观
首先就是说我们配置一个在那个 RX的一条指令
这是第一条命令 我们要执行那个命令
就是被 trigger 的命令
然后第二条命令就是 TX 命令
这是我们干嘛用呢
就是我们我们订一个类似于
比如私有的握手的一个协议
就是我发 就是私有握手协议
就是我先收一个数据 然后收一个收一包数据
然后再告诉对方 我就是收到这个数据
就是所以我先 RX 一下 然后再 TX 一下对吧
然后你可以就是然后把两头命令串起来
就是用那个pointer 然后那个我这边收到了
唉我觉得 RX 我觉得数据处理OK了
我就自动的发一个 TX 出去 中间可以判断
这个也是一样的 相对来的 就是说那个 TX
就是另外一端 我先发送 发送完了之后
我在这边启动一个 Timer 等嘛对吧
然后等 然后这都是 M0 里面的处理
M3 发给 M0 的那个事件那个命令
就是 M3比如发给 M0 TX 完了之后
M3 就睡觉了 然后 M0它就直接执行下面的东西
它就等着那个 RX
RX收到数据之后它判断如果是正确的
它可能就是有事情要处理 它可以把 M3唤醒
如果不对它可以回到 TX 重发
就是完全你们自己就是可以定义的
那种相当于把这个下条指令之前的 Timer错过去了
可以那个自己定义的一个就是命令链
那这就是 Retry Counter 什么意思呢
就是前面的我们再加一步 就是说你不能总是
我没收到对方的 ack 可我在不停的重发
不停重发这种对吧 那我可以加个 Counter
那就我重发或者等待对方接收几次以后
我这我就停止
认为这个包是丢了或错了或怎么样对吧
所以一样的先 TX TX 完了之后
它指向下一条命令就是等待 RX
如果 Timer Out之后我就开始Count记一次
然后重新来 TX 再等 RX然后又没收到
然后再 count
到了一定次数之后我就停掉了
我就认为这个就不对了对吧
就是这样很简单 那就是这个就是另外一种情况
就是当然刚才我们说的可能 就是说是我没有设置
只设置了一个频段对吧 我们有多种频段
因为这完全是就是可以自己配置
你可以在一个频段上先设置
然后接收完 然后再设置另外一个可以呢再发送
这样都是命令链这样下去
你就先设置好 然后丢给 M0去处理
然后它收到了正确的 ack 之后再唤醒 M3
这样就是说达到我们这种低功耗的目的
不停的可以循环
你也可以这样执行完一次就结束了
其实就相当于我们
你可以想象就是因为我们 BLE 里面
BLE 里面就是跳频了嘛对吧
它每次发时候它接收发送完一个频段之后
它就会切换到下一个 我们有 Channel Map 对吧
我们知道下次应该跳到哪个 Channel上去
其实你也可以认为
其实 BLE 里面本质上做的是类似这种事情
当然其它 我们这边是 Sub-1G 的
就是 1GHz 以下的那个平台上面它这样做
视频报错
手机看
扫码用手机观看
收藏本课程
-
未学习 WCS (4.2b) CC13xx CC26xx Schematics (2)
00:36:14
播放中
视频简介
WCS (4.2b) CC13xx CC26xx Schematics (2)
所属课程:WCS (4.2b) CC13xx CC26xx Schematics (2)
发布时间:2016.04.01
视频集数:1
本节视频时长:00:36:14
TI 微控制器 (MCU) 在世界各地帮助塑造系统,推动迅速、环保、智能和富于乐趣的设计进步。让 TI MCU 帮助您实现这一目标。从低功耗 MSP MCU 和高性能 C2000™ 实时控制器到用于功能安全的 32 位 Hercules™ARM® MCU 以及Cortex®-M4 MCU,TI 提供了种类繁多的嵌入式控制器产品以满足您的设计需要。TI 的 MCU 产品系列具有各种通用的可靠选件,能够满足客户在不断变化的技术世界中的需求。
//=$v1;?>
//=$v['id']?>//=$v['down_category']?>//=$v['link']?>//=$v['is_dl']?>//=$v['link']?>//=$v['name']?>//=$v['name']?>
//=$v['id']?>//=$v['down_category']?>//=$v['path']?>//=$v['is_dl']?>//=$v['path']?>//=$v['name']?>//=$v['name']?>
////=count($lesson['bbsinfo'])?>
//=$elink?>//=$elink?>//=$tags[0]?>//=$tags[0]?>//=$elink?>//= $elink?>//=$tags[1]?>//=$tags[1]?>
//=$lesson['bbs'];?>
//=count($lesson['bbsinfo'])?>