×
嵌入式 > 技术百科 > 详情

MSP430F5529LP+CC3000学习心得(一)

发布时间:2020-06-20 发布时间:
|

设备: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下的接口改成如下

[csharp] view plaincopy

  1. #ifndef BOARD_H  

  2. #define BOARD_H  

  3.   

  4. // Pins from MSP430 connected to the RF Header  

  5. #define SPI_IRQ_PIN       BIT0  

  6. #define WLAN_EN_PIN        BIT5  

  7.  

  8. #define SPI_SIMO        BIT0  

  9. #define SPI_SOMI        BIT1  

  10. #define SPI_CLK         BIT2  

  11. #define RF_CS           BIT2  

  12.   

  13. // Ports  

  14. #define SPI_SEL         P3SEL  

  15. #define SPI_DIR         P3DIR  

  16. #define SPI_OUT         P3OUT  

  17. #define SPI_REN         P3REN  

  18.  

  19. #define RF_CS_SEL       P2SEL  

  20. #define RF_CS_OUT       P2OUT  

  21. #define RF_CS_DIR       P2DIR  

  22.  

  23. #define SPI_IRQ_DIR       P2DIR  

  24. #define SPI_IRQ_IN        P2IN  

  25. #define SPI_IRQ_IES       P2IES  

  26. #define SPI_IRQ_IE        P2IE  

  27. #define SPI_IFG_PORT        P2IFG  

  28.  

  29. #define WLAN_EN_DIR       P6DIR  

  30. #define WLAN_EN_OUT       P6OUT  

[csharp] view plaincopy

  1. SPI.c文件下的修改如下:  

[csharp] view plaincopy

  1. //*****************************************************************************  

  2. //   

  3. //!  IntSpiGPIOHandler  

  4. //!   

  5. //!  @param  none  

  6. //!   

  7. //!  @return none  

  8. //!   

  9. //!  @brief  GPIO A interrupt handler. When the external SSI WLAN device is  

  10. //!          ready to interact with Host CPU it generates an interrupt signal.  

  11. //!          After that Host CPU has registered this interrupt request  

  12. //!          it set the corresponding /CS in active state.  

  13. //   

  14. //*****************************************************************************  

  15. #pragma vector=PORT2_VECTOR     //需要修改为P2.0  

  16. __interrupt void IntSpiGPIOHandler(void)  

  17. {  

  18.     switch(__even_in_range(P2IV, P2IV_P2IFG0))  

  19.     {  

  20.     case P2IV_P2IFG0:  

  21.         if (sSpiInformation.ulSpiState == eSPI_STATE_POWERUP)  

  22.         {  

  23.             //This means IRQ line was low call a callback of HCI Layer to inform   

  24.             //on event   

  25.             sSpiInformation.ulSpiState = eSPI_STATE_INITIALIZED;  

  26.         }  

  27.         else if (sSpiInformation.ulSpiState == eSPI_STATE_IDLE)  

  28.         {  

  29.             sSpiInformation.ulSpiState = eSPI_STATE_READ_IRQ;  

  30.               

  31.             /* IRQ line goes down - we are start reception */  

  32.             ASSERT_CS();  

  33.               

  34.             // Wait for TX/RX Compete which will come as DMA interrupt  

  35.             SpiReadHeader();  

  36.               

  37.             sSpiInformation.ulSpiState = eSPI_STATE_READ_EOT;  

  38.               

  39.             SSIContReadOperation();  

  40.         }  

  41.         else if (sSpiInformation.ulSpiState == eSPI_STATE_WRITE_IRQ)  

  42.         {  

  43.             SpiWriteDataSynchronous(sSpiInformation.pTxPacket,   

  44.                                                             sSpiInformation.usTxPacketLength);  

  45.               

  46.             sSpiInformation.ulSpiState = eSPI_STATE_IDLE;  

  47.               

  48.             DEASSERT_CS();  

  49.         }  

  50.         break;  

  51.     default:  

  52.         break;  

  53.     }  

  54.       

  55. }  

Spi.c如若没有修改,程序将一直停在:

[html] view plaincopy

  1. if (sSpiInformation.ulSpiState == eSPI_STATE_POWERUP)  

  2.     {  

  3.         while (sSpiInformation.ulSpiState != eSPI_STATE_INITIALIZED)  

  4.             ;  

  5.     }  


第四步: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


MSP430F5529LP+CC3000学习过程(二)——与PC互传数据

准备:确保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。如图所示。


 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
Keil5(MDK5)在调试(debug)过程中遇到的问题