MSP430F5529LP+CC3000學(xué)習(xí)心得(一)
設(shè)備:MSP430F5529LP+CC3000 BoosterPack EVM
SDK:CC3000 SDK_V1.11 、android下smart Config APP
Patch:PatchProgrammerMSP430F5529LP-7.11.7.13.19
開發(fā)環(huán)境:CCS 5.4.0
第一步:硬件連接。
第二步:對F5529LP進行Patch programmer。
導(dǎo)入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開發(fā)板與CC3000對應(yīng)的管腳有區(qū)別)
導(dǎo)入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如若沒有修改,程序?qū)⒁恢蓖T冢?/p>
[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。打開串口調(diào)試助手。設(shè)置好參數(shù)9600,n,8,1。reboot LaunchPad, 串口顯示Example App:driver version 6.13.7.13。
串口發(fā)送01,可看到LED1一直在閃爍。設(shè)置好smart config,點擊Start ,如圖:
smart config完成之后,串口收到smart config DONE, IP255.255.255.255。此處,IP明顯錯誤。多次重啟配置仍出現(xiàn)此錯誤。
本人猜測可能原因:1、無限路由器設(shè)置有問題時,導(dǎo)致CC3000自動獲取IP有問題。因為使用手機連接上網(wǎng)時,也有時會出現(xiàn)獲取IP失敗的情況。2、CC3000SDK中的協(xié)議程序編寫有問題。
解決方案:給CC3000配置靜態(tài)IP。串口發(fā)送08+IP+網(wǎng)關(guān),十六進行形式。例如IP:172.20.69.215,網(wǎng)關(guān):172.20.69.1。則發(fā)送08ac1445d7ac144501。
串口回復(fù)DONE之后,reboot LaunchPad。將會出現(xiàn)Example App:driver version 6.13.7.13 IP:172.20.69.215
如圖:
第六步:execute ping command. 如圖:
It'sOK
準備:確保CC3000與AP已連接。execute the ping command .(過程見(一))。
打開串口調(diào)試助手和網(wǎng)絡(luò)調(diào)試助手。設(shè)置好參數(shù)。
一、Send UDP Data:
1、發(fā)送命令 03 ,串口返回DONE。
2、發(fā)送命令 04051234502115cac1445d9。(指令解析如下)
二、Recieve UDP Data:
1、發(fā)送命令03,串口返回DONE。
2、發(fā)送命令06088d,格式06XXYY。XXYY是網(wǎng)絡(luò)端口號的十六進制形式,本次是2189,所以是06088d。
3、發(fā)送命令05。串口顯示接受到的數(shù)據(jù)。沒有接受到數(shù)據(jù),則返回no data recieved。如圖所示。