MSP430F5529LP+CC3000学习心得(一)
扫描二维码
随时随地手机看文章
设备:MSP430F5529LP+CC3000 BoosterPack EVM
SDK:CC3000 SDK_V1.11 、android下smart Config APP
Patch:PatchProgrammerMSP430F5529LP-7.11.7.13.19
开发环境:CCS 5.4.0
第一步:硬件连接。
第二步:对F5529LP进行Patch programmer。
导入C:ti PatchProgrammerMSP430F5529LP-7.11.7.13.19Patch Programmer SourcePatch Programmer CCS目录下的三个工程CC3000 SPi、CC3000HostDriver、Patcher Programmer。逐一对其进行build。然后将PatcherProgrammer 进行debug。reboot launchPad。
第三步:对SDK进行移植。(MSP430F5529和MSP430F5529LP开发板与CC3000对应的管脚有区别)
导入C:tiCC3000SDKCC3000 SDKMSP430F5529Basic WiFi ApplicationBasic WiFi SourceBasic Wifi Application CCS目录下的四个工程Basic WiFI Application、CC3000 Hoster Driver、CC3000Spi、HyperTerminal Driver。将Board.h下的接口改成如下
[csharp]view plaincopy
#ifndefBOARD_H
#defineBOARD_H
//PinsfromMSP430connectedtotheRFHeader
#defineSPI_IRQ_PINBIT0
#defineWLAN_EN_PINBIT5
#defineSPI_SIMOBIT0
#defineSPI_SOMIBIT1
#defineSPI_CLKBIT2
#defineRF_CSBIT2
//Ports
#defineSPI_SELP3SEL
#defineSPI_DIRP3DIR
#defineSPI_OUTP3OUT
#defineSPI_RENP3REN
#defineRF_CS_SELP2SEL
#defineRF_CS_OUTP2OUT
#defineRF_CS_DIRP2DIR
#defineSPI_IRQ_DIRP2DIR
#defineSPI_IRQ_INP2IN
#defineSPI_IRQ_IESP2IES
#defineSPI_IRQ_IEP2IE
#defineSPI_IFG_PORTP2IFG
#defineWLAN_EN_DIRP6DIR
#defineWLAN_EN_OUTP6OUT
[csharp]view plaincopy
SPI.c文件下的修改如下:
[csharp]view plaincopy
//*****************************************************************************
//
//!IntSpiGPIOHandler
//!
//!@paramnone
//!
//!@returnnone
//!
//!@briefGPIOAinterrupthandler.WhentheexternalSSIWLANdeviceis
//!readytointeractwithHostCPUitgeneratesaninterruptsignal.
//!AfterthatHostCPUhasregisteredthisinterruptrequest
//!itsetthecorresponding/CSinactivestate.
//
//*****************************************************************************
#pragmavector=PORT2_VECTOR//需要修改为P2.0
__interruptvoidIntSpiGPIOHandler(void)
{
switch(__even_in_range(P2IV,P2IV_P2IFG0))
{
caseP2IV_P2IFG0:
if(sSpiInformation.ulSpiState==eSPI_STATE_POWERUP)
{
//ThismeansIRQlinewaslowcallacallbackofHCILayertoinform
//onevent
sSpiInformation.ulSpiState=eSPI_STATE_INITIALIZED;
}
elseif(sSpiInformation.ulSpiState==eSPI_STATE_IDLE)
{
sSpiInformation.ulSpiState=eSPI_STATE_READ_IRQ;
/*IRQlinegoesdown-wearestartreception*/
ASSERT_CS();
//WaitforTX/RXCompetewhichwillcomeasDMAinterrupt
SpiReadHeader();
sSpiInformation.ulSpiState=eSPI_STATE_READ_EOT;
SSIContReadOperation();
}
elseif(sSpiInformation.ulSpiState==eSPI_STATE_WRITE_IRQ)
{
SpiWriteDataSynchronous(sSpiInformation.pTxPacket,
sSpiInformation.usTxPacketLength);
sSpiInformation.ulSpiState=eSPI_STATE_IDLE;
DEASSERT_CS();
}
break;
default:
break;
}
}
Spi.c如若没有修改,程序将一直停在:
[html]view plaincopy
if(sSpiInformation.ulSpiState==eSPI_STATE_POWERUP)
{
while(sSpiInformation.ulSpiState!=eSPI_STATE_INITIALIZED)
;
}
第四步:build 第三步中的四个工程之后,对Basic WIfI Application进行 debug。然后reboot LaunchPad。
第五步:对CC3000进行 smart config。打开串口调试助手。设置好参数9600,n,8,1。reboot LaunchPad, 串口显示Example App:driver version 6.13.7.13。
串口发送01,可看到LED1一直在闪烁。设置好smart config,点击Start ,如图:
smart config完成之后,串口收到smart config DONE, IP255.255.255.255。此处,IP明显错误。多次重启配置仍出现此错误。
本人猜测可能原因:1、无限路由器设置有问题时,导致CC3000自动获取IP有问题。因为使用手机连接上网时,也有时会出现获取IP失败的情况。2、CC3000SDK中的协议程序编写有问题。
解决方案:给CC3000配置静态IP。串口发送08+IP+网关,十六进行形式。例如IP:172.20.69.215,网关:172.20.69.1。则发送08ac1445d7ac144501。
串口回复DONE之后,reboot LaunchPad。将会出现Example App:driver version 6.13.7.13 IP:172.20.69.215
如图:
第六步:execute ping command. 如图:
It'sOK
准备:确保CC3000与AP已连接。execute the ping command .(过程见(一))。
打开串口调试助手和网络调试助手。设置好参数。
一、Send UDP Data:
1、发送命令 03 ,串口返回DONE。
2、发送命令 04051234502115cac1445d9。(指令解析如下)
二、Recieve UDP Data:
1、发送命令03,串口返回DONE。
2、发送命令06088d,格式06XXYY。XXYY是网络端口号的十六进制形式,本次是2189,所以是06088d。
3、发送命令05。串口显示接受到的数据。没有接受到数据,则返回no data recieved。如图所示。