CC1310开发笔记
硬件资源
双核,M3负责协议,M0负责无线通信,还有一个sensor控制器,用于采集数据,低功耗运行。
128kBflash
20kBSRAM
senserController
传感器控制器是其他单片机没有的功能,cc1310可以说是3核,
传感器控制器可以独立于主CPU控制外围设备。例如,主CPU不需要唤醒来执行ADC样本或通过SPI轮询数字传感器。这节省了当前时间和唤醒时间,。ti提供一个PC工具(SCS)让你配置传感器控制器,选择哪些外设被控制,哪些条件唤醒主CPU。(SCS)是一个独立的IDE,用于开发和编译用于在传感器控制器上执行的微代码。有关的更多细节和文档,请参考Sensor Controller Studio帮助
开发方式
cc1310提供的sdk具有两种开发方式,一种是直接操作寄存器。类似51单片机,另一种是利用ti提供的api函数来实现。这些都放在了sdk的devicelib中
1.寄存器模式
寄存器方式模式开发在51比较常见,一般会把所有寄存器包含在一个reg51.h的头文件中,这样操作寄存器比较方便,在cc1310中也有这样的头文件,不同之处是cc1310寄存器太多,一个.h文件容易乱,具体位置在 工程 的inc
下,每个模块的头文件以hw_xxx.h
命名,其中xxx为模块名,这样方便查找。
2.API模式
api开发模式是ti写了一套c语言的库,类似于stm32 的hal库,屏蔽了底层的寄存器操作,能够实现快速开发。缺点是效率可能没有直接操作寄存器高
官方建议是配置外设寄存器时可以使用api,在应用中操作外设时,可以操作寄存器,当然任选其一也是可以的。
3.ROM函数
cc1310将一部分驱动库已经固化到了rom中,用户可以直接调用,可以节省更多的flash空间给用户使用
4.HAPI 函数
cc1310 driverlib还提供了一种HAPI函数,这种函数固化在ROM中,用户只能调用,看不到源代码。
HAPI函数可以在rom.h中看到
5.错误检查
devirerlib中所有函数提供了函数检查,在函数调用入口处通过断言来实现,为了提高效率可以在调试完成后将断言assert定义为空。
断言一般在调试时使用,便于发现错误。
6.设备设置
DriverLib包含一个称为SetupTrimDevice()的特殊函数,必须总是在ROM引导序列之后调用它,以便将修剪设置和某些客户配置(从CCFG)应用到设备。SetupTrimDevice()由CC13/26xxWare提供的启动文件调用。
7.客户配置
硬件介绍
1.程序下载方式
- uart 内置bootloader
- spi
- jtag 利用xds100v3.0下载器
2.复位
调用 HAL_SYSTEM_RESET();
可以复位,或者使用ccs中 Board Reset
3.aon
除处于关机模式(数字电源关闭)外,AON域包含始终处于启用状态的电路。这个电路包括以下:RTC可以用来唤醒设备从任何状态,它是活跃的。RTC包含三个比较寄存器和一个捕获寄存器。在软件支持下,RTC可以用于时钟和日历操作。该RTC是时钟从32 khz RC振荡器或晶体。RTC也可以补偿滴答在正确的频率,即使当内部32khz RC振荡器被使用而不是晶体。电池监视器和温度传感器可通过软件访问,并提供电池状态指示以及一个粗略的温度测量
4.引脚分配
cc1310牛逼之处可以将任何外设如Uart等分配到任意io上,这个分配由IOC实现。每种外设都有一个PORTid
,每个物理引脚都有一个DIOid
,IOC负责将其关联在一起(除特殊的AUX外设以外)
其中DIO并不是物理引脚的pin,他们之间根据封装不同有不同的对应关系,如下表所示:
PORTid与外设之间的对应关系如下
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BeBPZkFq-1602582613281)(D:\项目\笔记\cc1310学习笔记.assets\image-20200901112853122.png)]
ioc又分为mcu iot和aon ioc,mcu掉电前将透明模式关闭,ioc配置由aonioc接管,配置不丢失,mcu上电后恢复透明模式继续接管。
代码片段
1 uart
所有外设几乎都是先init 然后在open 在init中一般操作是将所有外设放到一个驱动结构体数组中,open是从init的数组中将某一个取出来,得到所谓的句柄,其实就是一个结构体指针,在目标结构体中存储有这个外设所有的操作函数。