昇润CC2640 SDK应用入门教程四
发布日期:2017.02.27 浏览次数:313
让各位小伙伴久等啦,特奉上昇润CC2640 SDK应用入门教程四-BLE与串口数据传输。之前的实验,通过手机APP可以与模块进行双向收发数据,并利用数据的发送来控制LED的开、关、闪烁。很多老司机在问,可不可以将数据通过串口打印出来呀?串口是否可以直接发送数据给手机?答案当然是没问题,看我给大家细细道来:既然想串口打印,当然要有一个USB转UART的工具,老套路,先上个图:
把昇润SDK开发套件中的串口工具,同我们的开发目标板联上,如下图所示:
跳线什么的,大家都照着先接上,没有这个转接套件的,依下图的标示把串口要用的线接上:
怎么接呢?
依上图标示,我们将Wakeup接到地上;DIO13,即UART_TX接到USB转UART TTL电平工具的RX;同样我们DIO14,即UART_RX接到USB转UART TTL电平工具的TX;再接上电源、地;我接啦一个给大家参考一下:
为什么要这么接呢?
在昇润的SDK下的这个文件:TTCSDKBoard.h里有定义好IO脚位,大家可以对照一下:
其中WakeUp接到地上,芯片的串口模块才会工作;硬件准备好啦,我们把开发调试器连接上,打开上个试验的工程,开始将串口的软件功能宏定议打开,如下所示:
打开后编译通过,我们再找到串口例子程式的串口初始化,确认一下串口的参数:
将串口调试器的参数设定成一样:
重复一下,参数一定要设成一样哦!!!
准备工作做好后,我们先来测试一下他原有的测试程试,对要把有冲突的IO改一下,串口示例代码的作用是将串口接收模块接收到的数据发回给发送模块,每发送一次数据就将DIO0翻转一次,这里会与上次的GPIO测试会有点冲突,我们改下,改到DIO1;首先找到TTCDriverRARTDemo.c这个文件:
还是TTCDriverRARTDemo.c这个文件,先把UART接收回调函数里的IO改过来:
再把PIN_Config改一下:
将这个#if0改为1打开这个IO的配置功能:
这样就可以实现串口自发自收,大家测试一下,首先一运行:
串口测试程式会输出:TTCDriverUART Test并换行;
因为测试程式在初始化串口时就输出啦这行字符,如下所示;
我们再来测试一个是不是,真的发什么,就回传什么呀!清屏,并改为16进制先试一下:
真的可以哦!这是为什么呢?
原来在串口接收回调中把收到的数据又发送回去啦!
定时传会不会死呀?试试:
字符行不行呀?
定时发一下:
IO是不是真的会翻转呀?现在是关啦!
再发一下,是会亮哦!
单独串口测试没有问题啦,把BLE收发移进来吧!
首先在TTCDriverRARTDemo.c这个文件中,增加二个变量,保存串口接收到的数据指针及收到的数据长度:
在接收回调中,将数据存到变量中,标注1;激活串口任务,标注2;
在串口事件中,将数传通过BLE传送给手机APP,程式如下修改:
标注1:之前在接收回调保存的数所指针,及数据长度;
标注2:这个函数是在上次试验中的使用过的向手机传送数据的函数;
同样,我们要把BLE接收到的数据也先保存起来,也是先申请好变量:
这个要在TTCBlePeripheralTask.c这个文件中进行,然后BLE接收数据地方把数据保存起来:
标注1:复制数据;
标注2:保存接收到的数据长度;
我们在激活的事件中,把数据传送给串口:
先编译一下,看可行不?
没有定议?好吧!应该是头文件没有进来,加上:
再来,晕,还是不行,看看:
类型没有?加上,再来:
好像可以,我下载到目标板来试试,先用手机APP联上目标板,进到透传。
我们先测试16进制模式:
字符模式,测试看看:
看看,二个不同IO的播转功能还有没有:
还是可以翻转的:
串口与APP通讯功能就到这里!