案例分析
公司目前在用CC3200替代早期Smart Power系统中的LPC1768+Zigbee方案,需要用到CC3200的4个外部AD通道。
开发板电路中Pin55、Pin57作为串口UART0与FT2232D串口相连接。因暂时没有找到CC3200片内ROM的详细资料,故不清楚Bootloader的实现方式及Flash具体下载流程,分析为通过串口0将代码传送至Flash_SPI。
为了使用4个外部AD通道,在新设计电路中做了如下调整:
如图所示,蓝色线为开发板默认连接,棕色线和黄色线为调整后的连接,即将串口0由Pin55、Pin57调整至Pin03、Pin04..
实验采用SDK中ADC例程
将如下两行代码:
// Configure PIN_55 (GP1) for UART0 AUART0_TX
//
MAP_PinTypeUART(PIN_55, PIN_MODE_3);
//
// Configure PIN_57 (GP2) for UART0 AUART0_RX
//
MAP_PinTypeUART(PIN_57, PIN_MODE_3);
根据电路设计,做如下修改:
// Configure PIN_55 (GP1) for UART0 AUART0_TX
//
MAP_PinTypeUART(PIN_03, PIN_MODE_7);
//
// Configure PIN_57 (GP2) for UART0 AUART0_RX
//
MAP_PinTypeUART(PIN_04, PIN_MODE_7);
编译工程
之后
打开UniFlash
1.在/sys/mcuimg.bin中添加要烧写的bin文件,即ADC历程release文件下的adc.bin,勾选Erase、Update、Verify三项
2.User Files项是空的,因为这个例程没有网页相关信息
3.点击CC31xx/CC32xx Config Groups 去掉enable选项的勾选,因为本例程没有网络相关信息
然后点击Format,根据提示按下复位
然后点击Program,根据提示按下复位,进行烧写
烧写信息如下:
[16:35:34] INFO: --- please restart the device ---
[16:35:36] INFO: connection succeeded
[16:35:36] INFO: getting storage list
[16:35:37] INFO: > Executing Operation: Init
[16:35:37] INFO: reading version info
[16:35:37] INFO: DEVICE CC3200 ES1.33
[16:35:37] INFO: reading version info
[16:35:38] INFO: reading version info
[16:35:40] INFO: > Executing Operation: Program
[16:35:40] INFO: > File name: /sys/mcuimg.bin, Update: true, Erase: true
[16:35:40] INFO: > Erase File: /sys/mcuimg.bin
[16:35:40] INFO: erasing file "/sys/mcuimg.bin"
[16:35:40] INFO: deleting file "/sys/mcuimg.bin"
[16:35:40] INFO: erase file completed
[16:35:40] INFO: > Size of file = 13464
[16:35:40] INFO: > Update File: /sys/mcuimg.bin
[16:35:40] INFO: Downloading file "/sys/mcuimg.bin" with size 13464
[16:35:40] INFO:
New Token is 0x0
[16:35:40] INFO: Download complete
[16:35:40] INFO: Verifying Data...
[16:35:40] INFO: get file
[16:35:41] INFO: Done. Reading 13464 bytes
[16:35:41] INFO:
Verification OK
[16:35:42] INFO: > Updated Token value: 0x0
[16:35:42] INFO: > File name: /cert/ca.pem, Update: false, Erase: false
[16:35:42] INFO: > File name: /cert/client.pem, Update: false, Erase: false
[16:35:42] INFO: > File name: /cert/private.key, Update: false, Erase: false
[16:35:42] INFO: > File name: /sys/macadd.bin, Update: false, Erase: false
[16:35:42] INFO: > File name: /sys/mode.cfg, Update: false, Erase: false
[16:35:42] INFO: > File name: /sys/ipcfg.ini, Update: false, Erase: false
[16:35:42] INFO: > File name: /sys/ap.cfg, Update: false, Erase: false
[16:35:42] INFO: > File name: /sys/devname.cfg, Update: false, Erase: false
[16:35:42] INFO: > File name: /sys/mdns.cfg, Update: false, Erase: false
[16:35:42] INFO: > File name: /sys/dhcpsrv.cfg, Update: false, Erase: false
[16:35:42] INFO: > File name: /sys tpsrv.cfg, Update: false, Erase: false
[16:35:42] INFO: > File name: /sys/pref.net, Update: false, Erase: false
[16:35:42] INFO: > File name: /sys/smartconfigkeys.cfg, Update: false, Erase: false
[16:35:42] INFO: > File name: /sys/stacfg.ini, Update: false, Erase: false
[16:35:42] INFO: > File name: /sys/p2p.cfg, Update: false, Erase: false
[16:35:42] INFO: > File name: /sys/pmcfg.ini, Update: false, Erase: false
[16:35:42] INFO: > Executing Operation: Disconnect
[16:35:42] Operation Program returned.
提示false的那些没有关系,因为原本也没有那些东西
烧写程序后去掉J6、J7条线,用杜邦线连接J7.Pin3与CC3200 Pin03,J6.Pin3与CC3200 Pin04,例程运行正常。
为了验证烧写流程是否存在其他问题,决定还原串口0代码,保持J7.Pin3与CC3200 Pin03,J6.Pin3与CC3200 Pin04的连接不变,重复烧写流程,这样反向还原是为了验证代码中串口0的调整是否影响烧写;
结果烧写不成功。
随后还原开发板J6、J7跳线,再次烧写,成功。
结论:
当安装SOP2跳线后,Bootloader程序可能将串口0位置设定在Pin55、Pin57,并作为下载Flash程序之用。
因此,在本案例中,为了使用全部AD通道,并且能够使用串口0查看调试信息,需要在代码中改变串口0的位置,即烧写程序时使用Pin55、Pin57作为串口0,烧写完成后,移除SOP2,运行flash程序后,Pin03、Pin04作为串口0.
希望这篇文档对大家了解CC3200 Flash烧写流程有所帮助。
Bootloader是否固定将串口0位置设定为Pin55、Pin57,希望官方给出明确答案,以避免在自行设计CC3200电路板时出现烧写方面的问题,希望能够提供CC3200片内ROM的详细资料,目前我没有找到,谢谢!
感觉CC3200的设计与FPGA很相似。
同样都是配备片外存储器存储代码或配置信息,CC3200将代码加载到片内SRAM运行,而FPGA是配置内部门电路。
掉电以后,都可以看作是一颗空白的芯片。
