设备: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.19\Patch Programmer Source\Patch Programmer CCS目录下的三个工程CC3000 SPi、CC3000HostDriver、Patcher Programmer。逐一对其进行build。然后将PatcherProgrammer 进行debug。reboot launchPad。
第三步:对SDK进行移植。(MSP430F5529和MSP430F5529LP开发板与CC3000对应的管脚有区别)
导入C:\ti\CC3000SDK\CC3000 SDK\MSP430F5529\Basic WiFi Application\Basic WiFi Source\Basic Wifi Application CCS目录下的四个工程Basic WiFI Application、CC3000 Hoster Driver、CC3000Spi、HyperTerminal Driver。将Board.h下的接口改成如下
- #ifndef BOARD_H
- #define BOARD_H
-
- // Pins from MSP430 connected to the RF Header
- #define SPI_IRQ_PIN BIT0
- #define WLAN_EN_PIN BIT5
-
- #define SPI_SIMO BIT0
- #define SPI_SOMI BIT1
- #define SPI_CLK BIT2
- #define RF_CS BIT2
-
- // Ports
- #define SPI_SEL P3SEL
- #define SPI_DIR P3DIR
- #define SPI_OUT P3OUT
- #define SPI_REN P3REN
-
- #define RF_CS_SEL P2SEL
- #define RF_CS_OUT P2OUT
- #define RF_CS_DIR P2DIR
-
- #define SPI_IRQ_DIR P2DIR
- #define SPI_IRQ_IN P2IN
- #define SPI_IRQ_IES P2IES
- #define SPI_IRQ_IE P2IE
- #define SPI_IFG_PORT P2IFG
-
- #define WLAN_EN_DIR P6DIR
- #define WLAN_EN_OUT P6OUT
复制代码SPI.c文件下的修改如下:
- //*****************************************************************************
- //
- //! IntSpiGPIOHandler
- //!
- //! @param none
- //!
- //! @return none
- //!
- //! @brief GPIO A interrupt handler. When the external SSI WLAN device is
- //! ready to interact with Host CPU it generates an interrupt signal.
- //! After that Host CPU has registered this interrupt request
- //! it set the corresponding /CS in active state.
- //
- //*****************************************************************************
- #pragma vector=PORT2_VECTOR //需要修改为P2.0
- __interrupt void IntSpiGPIOHandler(void)
- {
- switch(__even_in_range(P2IV, P2IV_P2IFG0))
- {
- case P2IV_P2IFG0:
- if (sSpiInformation.ulSpiState == eSPI_STATE_POWERUP)
- {
- //This means IRQ line was low call a callback of HCI Layer to inform
- //on event
- sSpiInformation.ulSpiState = eSPI_STATE_INITIALIZED;
- }
- else if (sSpiInformation.ulSpiState == eSPI_STATE_IDLE)
- {
- sSpiInformation.ulSpiState = eSPI_STATE_READ_IRQ;
-
- /* IRQ line goes down - we are start reception */
- ASSERT_CS();
-
- // Wait for TX/RX Compete which will come as DMA interrupt
- SpiReadHeader();
-
- sSpiInformation.ulSpiState = eSPI_STATE_READ_EOT;
-
- SSIContReadOperation();
- }
- else if (sSpiInformation.ulSpiState == eSPI_STATE_WRITE_IRQ)
- {
- SpiWriteDataSynchronous(sSpiInformation.pTxPacket,
- sSpiInformation.usTxPacketLength);
-
- sSpiInformation.ulSpiState = eSPI_STATE_IDLE;
-
- DEASSERT_CS();
- }
- break;
- default:
- break;
- }
-
- }
复制代码Spi.c如若没有修改,程序将一直停在:
- 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's OK