可能不只是cc2652有这些坑,估计cc26xx系列都存在。
CCS的预编译宏配置位置
时钟获取
时钟获取__STATIC_INLINE uint32_t SysCtrlClockGet( void )在sys_ctrl.h中,sys_ctrl.h没有在工程路径下面,在其sdk中
节拍时间获取 ICall_getTicks(); 单位10us,自加1;ICall_getTickPeriod()是单位,即10us;
回调函数设置
有两种方式设置回调函数:在.syscfg的Callback Function中设置,或者将其设置为NULL,在程序中使用GPIO_setCallback进行回调绑定;
无论使用上面哪种方式,都需要在GPIO_enableInt(CONFIG_GPIO_IRQ_3993)前面加上GPIO_init(),否则无法进入中断
IRQ在ENEXTIRQ中需要获取其电平
官方参考文件:/ti/simplelink_cc13x2_26x2_sdk_5_20_00_52/docs/drivers/doxygen/html/_g_p_i_o_8h.html
纳秒延时
受限于CC2652最大48M晶振的情况,无法实现ns级别延时,最快只能按如下实现62ns延时:
/* 3 cycles per loop: 1 loop @ 48 Mhz ~= 62 ns ; 8 loop @ 48 Mhz ~= 0.5 us */
CPUdelay(1);
SPI和低功耗
CC2652的SPI普通模式参考文件:ti/simplelink_cc13x2_26x2_sdk_5_20_00_52/docs/drivers/doxygen/html/_s_p_i_8h.html
CC2652的SPI DMA模式参考文件:ti/simplelink_cc13x2_26x2_sdk_5_20_00_52/docs/drivers/doxygen/html/_s_p_i_c_c26_x2_d_m_a_8h.html
因为SPI传输用到了高频晶振,所以在SPI通信期间,设备无法进入待机状态,调用SPI_transferCancel()后可以进行待机状态
SPI_open(CONFIG_SPI_3993, &SPIparams)中的CONFIG_SPI_3993是在.syscfg中配置的
主协处理器复用SPI问题
经测试,主协处理器不能复用GPIO(包括SPI)
当主处理器配置SPI引脚后,如果调用了协处理器的初始化,则引脚被协处理器抢占;主处理器的引脚配置在Board_initGeneral(); 中,但是如果二次调用Board_initGeneral(); 进行抢占,会崩溃。
目前测的结果应该是当关闭协处理器后,控制权会自动转交给主处理器,这个待进一步验证。
DAC的带载
带载能力比较弱,uA级别,驱动电压型的MOS管都费点劲
引脚配置
引脚配置可以用GPIO_write的方法,也可以使用PIN_setOutputEnable的方法
DIO31配置为输出时,程序在Board_initGeneral()崩溃(这个很奇怪,按说不应该啊);目前将引脚配置为DIO26可以