欢迎来到天天文库
浏览记录
ID:39736416
大小:608.14 KB
页数:23页
时间:2019-07-10
《由浅入深,蓝牙40BLE协议栈开发攻略大全(3)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、本系列教程将结合TI推出的CC254xSoC系列,讲解从环境的搭建到蓝牙4.0协议栈的开发来深入学习蓝牙4.0的开发过程。教程共分为六部分,本文为第三部分: 第三部分知识点: 第十一节串口通信 第十二节Flash的读写 第十三节BLE协议栈简介 第十四节OSAL工作原理 第十五节BLE蓝牙4.0协议栈启动分析 有关TI的CC254x芯片介绍,可点击下面链接查看: 主流蓝牙BLE控制芯片详解(1):TICC2540 同系列资料推荐: 由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(1) 由浅入深,蓝牙4.0/BLE协议栈开发攻略大全(2) 有关本文的工具下
2、载,大家可以到以下这个地址: 朱兆祺ForARM 第十一节串口通信 在软件开发过程中调试是一个很关键的过程,而调试用的最多的手段就是打印Log,嵌入式平台很少有显示设备,所以我们需要将信息通过串口打印到PC端。 MT254xboard上已经通过RS232芯片将UART0连接到DB9,我们只需要将DB9连接到电脑即可,UART0对应的外部设备IO引脚关系为:P0_2------RX,P0_3------TX。 我们需要将这两个IO配置为复用功能,CC2540的USART可以配置为SPI模式或者异步UART模式,这里我们需要配置为异步UART模式。 首先配置IO为UART模式
3、: PERCFG&=~0x01;//配置UART为位置1 P0SEL=0x3c;//P0_2,P0_3,P0_4,P0_5用作串口功能 P2DIR&=~0XC0;//P0优先作为UART0 配置UART0寄存器,将UART0配置为8N1模式,波特率为115200。 U0CSR
4、=0x80;//UART方式 U0GCR
5、=11;//U0GCR与U0BAUD配合 U0BAUD
6、=216;//波特率设为115200 UTX0IF=0;//清除中断标志 U0CSR
7、=0X40;//允许接收 IEN0
8、=0x84;//开总中断,接收中断 这里采用中断方式来接收串口数据,并在
9、中断中回调应用层的接收处理函数。 #pragmavector=URX0_VECTOR __interruptvoidUART0_ISR(void) { uint8ch; URX0IF=0;//清中断标志 ch=U0DBUF; if(NULL!=RecvCb)//调用回调函数 { RecvCb(ch); } } 为了测试串口的通讯功能,这里我们通过串口接收命令的方式来控制LED的亮灭和蜂鸣器的响和停止,并且显示当前的状态。根据串口输出提示,发送对应字符可以实现相应功能,并且显示状态。 第十二节Flash的读写 嵌入式系统中需要存储数据,而片内的Flash资
10、源很匮乏,所以我们经常需要使用SpiFlash来存储数据,MT254xboard中板载了一个512Kbyte的Flash,下面我们来驱动此Flash。上一小节中我们用SPI的方式驱动了LCD12864,这节我们继续用SPI来驱动板载的Flash,详细的说明了如何驱动这片Flash,在此不做累述,我们复制LCD12864工程,重命名为SpiFlash,在此工程中添加GD25Q40的两个驱动文件。 下面我们来检测这个Flash,检测的方法为,全部写入0xAA,然后再读出,对比是否为0xAA,如果是,那Flash是没有问题的,否则Flash可能已经有坏块。具体
11、的代码见例程,这个过程所需要的时间取决于我们需要检测的区域大小,如果完全检测,则可能需要几分钟的时间。 intmain(void) { SysStartXOSC(); LCD12864_Init();//LCD初始化 GD25Q40_Init();//Flash初始化 LCD12864_DisStr(0,“FlashCheck.。。。”); sprintf(LCDBuf,“FlashID:%04X”,GD25Q40_ReadID());//读取器件ID LCD12864_DisStr(1,LCDBuf); GD25Q40_EraseChip();//擦除整片Flash
12、大约需要10S LCD12864_DisStr(2,“EraseChipComplete”); uint32iCnt=0; //全部写入0xAA constuint8Write=0xAA; for(iCnt=0;iCnt
此文档下载收益归作者所有