本帖最后由 strong161 于 2017-12-18 10:26 编辑
这次TIsimplelink 优惠活动力度不如以前大,但是CC2640R2作为首款BLE5开发板还是非常值得一试的,相对于以前Launchpad 经黄黑色包装,新出的CC2640R2包装显然用料就用心多了,盒子也比以前的高上那么一个档次了,如图:
Simplelink作为TI大力推广的高度代码复用平台,CC2640R2是也是首个得到支持的BLE无线MCU目测以后TI Simplelink平台将会是形成一个很强大的复用体系,最新的无线芯片全都进了simplelink平台。
板子外观大家都看多了吧,也没有太多好说的,基本上是TI最新的launchpad样板,板子比以前的红板要细一些,颜色也更加亮,新的亮红看起来也很漂亮,最新的launchpad最大的特点就是user key全都由原来的底物板面上移到了现在的中间两边侧放,老的launchpad设计确实不太好,因为TI大部分板子都采用相同的塔式扩展接口,而扩展板对挡着下方的user key,而且很多扩展板上面没有提供key 这就不方便使用了,显然新launchpad设计师是考虑到了这个问题的。而新的板子也就方便使用了。Launchpad 用心程序还是很高的,从老的到新的都是母口在下方,可以提供板的支撑减少桌面存在导电物品导至的问题,但是也有一个问题就是所有的基本上大部分launchpad是放不平的,因为扩展口全在下方,调试器部分没有支撑点,话说不影响使用确实是一个尴尬的问题。
接下来,先按老规距来,开箱那就必须点个灯吧,在这点上得说说TI了,既然推出了CCS MAC版的,竟然没有mac版的sdk……搞的整个demo工程都麻烦。这就是你的不对了,sdk需要在windows安装后拷出来或是下linux版的。但是还有一些问题就是所有的协议栈工程都会有编译前处理,在CCS mac版导入工程后,需要先将协议栈工程中 前处理的lib_search,有的时候是 lib_search.exe 改成lib_search.py.
在windows下是使用是的exe,在linux和mac下就需要使用python了,所以安装CCS mac版需要先安装一个python2.7。然后将python安装路径放到lib_search.py第一行
lib_search.py在以下两个sdk文件夹中
simplelink_cc2640r2_sdk_1_40_00_45\tools\blestack\lib_search\
simplelink_cc2640r2_sdk_1_40_00_45\tools\ble5stack\lib_search\
windows sdk下面第一行是””在这行前面加入路径,方式如图:
我的安装路径 /Library/Frameworks/Python.framework/Versions/2.7/bin/python
但是安装路径根据个人习惯来的,会有不同,在终端窗口中输入命令: which python
就可以知道安装路径。打开lib_search.py 第一次加入
#!/Library/Frameworks/Python.framework/Versions/2.7/bin/python
依据lib_search.py 文件内容可以看出要求是python2.7.3,这个是老版本了,像我安装的是python2.7.14,大部分人也不可能是2.7.3,所以将最后的version_control() 调用注释掉就行了。
这样sdk没有大的问题了,使用RTOS工程没有什么毛病了,但是如果使用BLE协议栈工程的,就需要修改一下编译前处理,因为windows下是在使用的exe处理的,所以需要按前面的图修改exe 为lib_search.py,当然咯也可以用别的方式
其实前处理就是用来链接需要用的到lib,会生成一个lib_linker.cmd文件
内容如下,
- /*
- * DO NOT MODIFY. This file is automatically generated during the pre-build
- * step by the lib_search utility
- */
- "C:\ti\simplelink_cc2640r2_sdk_1_40_00_45\source\ti\blestack\blelib\ctrl\cc2640_hci_pxxx.a"
- "C:\ti\simplelink_cc2640r2_sdk_1_40_00_45\source\ti\blestack\blelib\ctrl\cc2640_ll_pxxx.a"
- "C:\ti\simplelink_cc2640r2_sdk_1_40_00_45\source\ti\blestack\blelib\hci_tl\cc26xx_hci_tl_none.a"
- "C:\ti\simplelink_cc2640r2_sdk_1_40_00_45\source\ti\blestack\blelib\host\cc26xx_att_pxxx.a"
- "C:\ti\simplelink_cc2640r2_sdk_1_40_00_45\source\ti\blestack\blelib\host\cc26xx_gap_pxxx.a"
- "C:\ti\simplelink_cc2640r2_sdk_1_40_00_45\source\ti\blestack\blelib\host\cc26xx_gatt_pxxx.a"
- "C:\ti\simplelink_cc2640r2_sdk_1_40_00_45\source\ti\blestack\blelib\host\cc26xx_l2cap_pxxx.a"
- "C:\ti\simplelink_cc2640r2_sdk_1_40_00_45\source\ti\blestack\blelib\host\cc26xx_profiles_pxxx.a"
- "C:\ti\simplelink_cc2640r2_sdk_1_40_00_45\source\ti\blestack\blelib\host\cc26xx_smp_pxxx.a"
- "C:\ti\simplelink_cc2640r2_sdk_1_40_00_45\source\ti\blestack\blelib\host\cc26xx_sm_pxxx.a"
复制代码当然每个工程会成的不一样,这个是在windows下生成的,mac下生成也就不同,所以也可以通过直接先在windows下编译工程,生成cmd文件,然后把这个文件放到对应的目录里面,并把路径修改成mac下对应的路径就行了,然后把前处理给删除了。当然按前面的方法更好,每个工程只需要改一下前处理的所引用的应用程序。所以sdk里面有mac与linux下的py来处理,完全没有必要再搞个exe嘛,直接全都用python处理那工程不就能通用了嘛。Windows下也是支持python的嘛。
接下来咱们点灯吧,sdk不仅有协议栈也有驱动,鉴于协议栈还不是太熟悉,先用RTOS点个灯点。先导入 sdk \examples\rtos\CC2640R2_LAUNCHXL\drivers\empty\tirtos\ccs,空白工程。
然后修改 empty.c 建立两个闪灯任务,也当作RTOS基本学习
- /* For usleep() */
- #include <unistd.h>
- #include <stdint.h>
- #include <stddef.h>
- /* Driver Header files */
- #include <ti/drivers/GPIO.h>
- /* Board Header file */
- #include "Board.h"
- /*
- * ======== mainThread ========
- */
- void *LED0_Thread(void *arg0)
- {
- /* 1 second delay */
- uint32_t time = 1;
- /* Call driver init functions */
- GPIO_init();
- /* Turn on user LED */
- GPIO_write(Board_GPIO_GLED, Board_GPIO_LED_ON);
- while (1) {
- sleep(time);
- GPIO_toggle(Board_GPIO_GLED);
- }
- }
- void *LED1_Thread(void *arg0)
- {
- /* 1 second delay */
- uint32_t time = 1;
- /* Call driver init functions */
- GPIO_init();
- /* Turn on user LED */
- GPIO_write(Board_GPIO_RLED, Board_GPIO_LED_ON);
- while (1) {
- sleep(time);
- GPIO_toggle(Board_GPIO_RLED);
- }
- }
复制代码
然后打开 main函数所在文件 main_tirtos.c
加入两个任务放到原来的任务后面。
- retc = pthread_create(&thread, &attrs, LED0_Thread, NULL);
- if (retc != 0) {
- /* pthread_create() failed */
- while (1);
- }
- retc = pthread_create(&thread, &attrs, LED1_Thread, NULL);
- if (retc != 0) {
- /* pthread_create() failed */
- while (1);
- }
复制代码好吧两个灯一起闪了。没有太动脑子,晚些再搞点复杂些的,把协议栈给加上。
此内容由EEWORLD论坛网友strong161原创,如需转载或用于商业用途需征得作者同意并注明出处