This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
尊敬的先生:
我需要将 CC3200的项目移植到 CC3235SF。
1. CC3200已从示例"wlan_ap"修改。 我应该从哪一个 CC3235SF 示例开始?
GPIO 的代码、例如:
MAP_GPIOPinWrite (GPIOA0_BASE、GPIO_PIN_7、GPIO_PIN_7:0);// 将 PIN52 (GPIO7)设置为高电平
我是否仍可以为 CC3235SF 中的同一引脚使用"GPIO7"?
CC3235SF 会是什么?
3. CC3200的以下代码指定 GPIO0中断处理程序:
GPIO_IF_ConfigureNIntEnable (GPIOA0_BASE、GPIO_PIN_0、GPIO_BLE_边缘、
Gpio0IntHndler);
CC3235SF 会是什么?
4. CC3200的以下代码指定计时器中断处理程序:
Timer_IF_Init (PRCM_TIMERERA0、TIMERERA0_BASE、TIMER_CFG_ONE_SHOT、TIMER_A、 0);
TIMER_IF_IntSetup (TIMERERA0_BASE、TIMER_A、ButtonTimerBaseIntHandler);
Timer_IF_Start (TIMER_RA0_BASE、TIMER_A、2000);
CC3235SF 会是什么?
感谢你能抽出时间。
您好、Luke、
您有几个移植选项。 如果您希望使 CC3200应用尽可能相似、可以在 CC32xx SDK (适用于 CC3220和 CC3235)中遵循此迁移指南。 对于 CC3200和 CC3235、driverlib 层是相同的、您可以使用 CC32xx SDK 的 source/ti/devices/cc32xx/driverlib 文件夹中的 driverlib 文件。 器件之间的引脚也相似。
我认为长期维护的更好选择是更新 TI 驱动程序 API。 这还允许您使用新的配置工具、如 SysConfig。 SDK 中提供了 TI 驱动程序 API 指南。 您可以在此处找到 GPIO 和计时器文档。 要了解有关 SysConfig 和 TI 驱动程序的更多信息、请查看 SimpleLink Academy 实验。
此致、
Sarah
尊敬的 Sarah:
感谢您的即时回复。
是否可以将 CC3235SF CCS 10项目与 TI-RTOS 一起使用 driverlib 层和 sl_compat.h 从 CC3200的"wlan_ap"进行转换?
这将大大有助于使 CC3235SF 尽快工作。
我们的第一步是重新使用 CC3200的原始代码。
然后、我们将按照新的 API 指南在 CC3235SF 中打开新功能。
感谢你能抽出时间。
此致、
Luke
您好、Luke、
我建议从新的 CC3235项目开始、因为它已经具有指向 CC32xx SDK 的正确链接。 您可以导入空项目(来自 examples/rtos/CC3235SF_LAUNCHXL/drivers 文件夹)、添加 simplelink.a 作为链接库、并从旧应用程序和迁移指南中复制和粘贴源代码。
此致、
Sarah
尊敬的 Sarah:
感谢您的建议。
我可以成功构建"empty"。
然后我添加以下行:
UARTChartPut (UARTA0_BASE、'.');
编译器报告的失败日志如下所示:
"C:\\ti\\ccs1040\\ccs\\utils\bin\\gmake"-k -j 8 all -O
编译文件:"../empty.c"
调用:ARM 编译器
"c:/ti/ccs1040/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/bin/armcl -mv7M4 --code_state=16 --float_support=vfplib -me --include_path="C:/ti/workspace_v10/empty_CC3235SF_LAUNCHXL_tirtos_ccs --include_path="C:/ti/workspace_v10/empty_CC3235SF_LAUNCHXL_tirtos_ccs/MCU /ti/simplelink_cc32xx_sdk_5_20_00_06/source/ti/devices/cc32xx/driverlib /ti/ccs1040/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/include +Image"--include_path="C:/ti/simplelink_cc32xx_sdk_5_20_00_06/source /ti/simplelink_cc32xx_sdk_5_20_00_06/source/ti/devices/cc32xx /ti/workspace_v10/empty_CC3235SF_LAUNCHXL_tirtos_ccs/MCU --include_display_subsection="c_definatination="c_definature=/ti/simplelink_cc32xx_sdk_5_20_00_06/source/ti/posix/ccs --inategraine-board_code.combe-ine_display_code.combe.combe.combe.combe-ine_subs=c_decnates=/ti/simplelink_cc32xx_sdk_5_20_00_06/source/ti/devices/cc32xx/inc /ti/workspace_v10/tirtos_builds_cc32xx_release_ccs/Debug/configPkg/compiler.opt --en_code.combuld_code.combe.com_code.combe.com_code.combe.com_code.combe.combe.com_code.combe.combe.com_probe.combe.com_probe.com.c:
"./empty.c"、第90行:警告#225-D:函数"UARTChartPUT"隐式声明
已完成构建:"./empty.c"
构建目标:"empty_CC3235SF_LAUNCHXL_tirtos_ccs.out"
调用:ARM 链接器
"c:/ti/ccs1040/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/bin/armcl /ti/simplelink_cc32xx_sdk_5_20_00_06/source /ti/workspace_v10/empty_CC3235SF_LAUNCHXL_tirtos_ccs/MCU "-mv7M4 -code_state=16 -float_support=vfplib -me -g -diag_warning=225 -***=255 -diag_warning_off -display_error_number -gen_func_subsections=on -z -mempty_CC3235x_ex_ptrads.iptos"-tos_iptos_ex-tos_un_intrads.tos"-ccs_ov_inf_rtos"-tin/rtos"-tin/r32x_ip_in_ex-tid_in_in_in_infots.tin_in_infot_in/r.cc32x_infot_infot_infot_in/rtos"-tin/r.cc_infot_infot_in_in_in_content/cc_infot_in.in/cc_infot_infot_in.in/r.in/cc_content/cc_infot_in.in/r.in./ti/workspace_v10/tirtos_builds_cc32xx_release_ccs/Debug/configPkg/linker.cmd /syscfg/ti_drivers_config.obj /ti/ccs1040/ccs/tools/compiler/ti-cgt-arm_20.2.5.LTS/lib /ti/simplelink_cc32xx_sdk_5_20_00_06/kernel/tirtos/packages
未定义的首次引用
符号
------ --------
UARTChartPut ./empty.obj
错误#10234-D:未解析的符号仍然存在
错误#10010:链接期间遇到错误;未构建"empty_CC3235SF_LAUNCHXL_tirtos_ccs.out"
>>编译失败
如何正确添加"C:\ti\simplelink_cc32xx_sdk_5_20_00_06\sources\ti\devices\cc32xx\driverlib\uart.c"?
感谢你能抽出时间。
此致、
Luke
您好、Luke、
empty.c 中是否包含 uart.h?
#include "uart.h"
此致、
Sarah
尊敬的 Sarah:
是的、包含"UART.h"。 我觉得"UARTChartPUT"应该是"UARTCharPUT"是个错误。
感谢您的善意帮助。
此致、
Luke
尊敬的 Sarah:
感谢您的指导、我可以制作一些从 CC3235SF 空项目开始编译的代码。
《迁移指南 》附录 I-1中提到以下内容:
(在 sl_compat.h
simplelink.h
包含之前包含)。
文件"simplelink.h"是否为"simplelink_cc32xx_sdk_4_40_00_07\source\ti\drivers\net\wii"下的文件?
我是否应该在 include 目录中添加"simplelink_cc32xx_sdk_4_40_00_07\source\ti\drivers\net\wifi?
感谢你能抽出时间。
此致、
Luke
您好、Luke、
您可以将 include 路径添加到工程属性中、也可以在源文件中使用以下内容:
#include <ti/drivers/net/wifi/sl_compat.h> #include <ti/drivers/net/wifi/simplelink.h>
此致、
Sarah
尊敬的 Sarah:
在我正在使用 CC3235SF 的板上、GPIO0连接到按钮。 当按下按钮时、它变为高电平、当释放按钮时、它变为低电平。
PRCMPeripheralClkEnable(PRCM_GPIOA0, PRCM_RUN_MODE_CLK); MAP_PinTypeGPIO(PIN_50, PIN_MODE_0, false); MAP_GPIODirModeSet(GPIOA0_BASE, GPIO_PIN_0, GPIO_DIR_MODE_IN); // GPIO0, input: pressed=0, released=1 while (1) { sleep(time); if(MAP_GPIOPinRead(GPIOA0_BASE, GPIO_PIN_0)==0) { UARTCharPut(UARTA0_BASE, '.'); } else { UARTCharPut(UARTA0_BASE, '*'); } }
我希望看到'.'。 释放按钮时打印, 按下按钮时打印“*”,就像安装了 CC3200一样。
在安装了 CC3235SF 电路板的情况下、仅'.' 但是,无论按下或松开按钮,都不会打印“*”。
您需要建议将 GPIO0设置为输入模式、并在为 CC3235SF 迁移代码时读取其值。
然后我尝试将"sl_Start (0、0、0);"添加 到代码中、并发现"simplelink.a"应该被添加到项目"empty"中。
您能帮我演示如何操作吗?
最后、您是否会指导我如何获取 WiFi 事件、例如"SimpleLinkWlanEventHandler"、 "SimpleLinkNetAppEventHandler"和"SimpleLinkSockEventHandler"?
感谢您的指导。 这对您有很大帮助。
此致、
Luke
您好、Luke、
CC3235上的引脚50也可用于 BLE 共存、因此 LaunchPad 在该引脚上有一个外部下拉电阻(请参阅 LaunchPad 设计文件)。
您可以通过转至项目属性-> ARM 链接器->文件搜索路径来链接项目中的库。
事件处理程序特定于应用、但您可以查看 SDK 中的任何演示示示示示例作为参考。 MQTT_CLIENT 演示中的 network_if.c 文件是一个开始的好地方。
此致、
Sarah
尊敬的 Sarah:
感谢您的建议。
我不使用 CC3235SF LaunchPad。 我正在使用我们自己产品的电路板。 GPIO0 (PIN50)被连接至一个按钮。 GPIO0在该板上安装了 CC3200时按预期工作。 我无法让 GPIO0与安装在同一电路板上的 CC3235SF 搭配使用。 以下 CC3235SF 代码中是否有任何错误?
PRCMPeripheralClkEnable(PRCM_GPIOA0, PRCM_RUN_MODE_CLK); MAP_PinTypeGPIO(PIN_50, PIN_MODE_0, false); MAP_GPIODirModeSet(GPIOA0_BASE, GPIO_PIN_0, GPIO_DIR_MODE_IN); // GPIO0, input: pressed=0, released=1 while (1) { sleep(time); if(MAP_GPIOPinRead(GPIOA0_BASE, GPIO_PIN_0)==0) { UARTCharPut(UARTA0_BASE, '.'); } else { UARTCharPut(UARTA0_BASE, '*'); } }
感谢你能抽出时间。
您好、Luke、
源代码看起来 不错、尤其是在使用 CC3200的情况下。 您能否使用另一个引脚进行测试? 您能否移除按钮并 直接尝试3.3V 电压?
此致、
Sarah
尊敬的 Sarah:
根据您的建议、我昨天修复了这些问题、并使 CC3235SF 在 AP 模式下成功工作。
当前 AP 模式在通道1-14的2.4GHz 下运行。
由于 CC3235SF 支持 WiFi 5 GHz、您是否可以帮助指导我如何启用5 GHz AP 模式?
它是否可以与2.4GHz 模式共存?
感谢你能抽出时间。
此致、
Luke
您好、Luke、
您可以使用 sl_WlanSet()设置通道。 请参阅《CC3x20、CC3x3x NWP 编程人员指南》中的第4.4节"接入点"。
您还可以在 ImageCreator 工程中配置此功能。
此致、
Sarah
您好、Luke、
您是否使用 QFN 或 MOD 封装? 对于 QFN、该5GHz 在最初为 CC3200 QFN 设计的布局中不起作用。
1月
尊敬的 Sarah:
我们使用的是 CC3235SFMOD。
读取 NWP 4.4后、我仍然不知道启用5GHz WiFi。
您是否会专门列出打开5GHz 的命令?
非常感谢。
此致、
Luke
您好、Luke、
将 SL_WlanSet 与 SL_WLAN_AP_OPT_CHANNEL 搭配使用。 请参阅该章的通道部分。
此致、
Sarah
尊敬的 Sarah:
借助 CC3200、我可以使用 sl_Send()发送长度高达1460字节的 TCP 数据包。 一切都正常、包括具有 UDMA 的 SPI。
对于 CC3235、如果 sl_Send()的长度超过396字节、则具有 UDMA 的 SPI 将停止工作。
我必须将 TCP 数据包拆分为几个长度不超过396字节的数据包,并使用几 个 sl_Send()发送它们。
_i16 sl_Send_patch (_i16 sd、unsigned char * buf、_i16 len、_i16 flags){
_i16 lenSent = 0;
_i16 lenSending = 0;
INT UNIT = 396;
while (len>unit){
lenSend=sl_Send (SD、buf、unit、flags);
if (lenSending >=0){
lenSent+=lenSending;
len-= lenSending;
buf+=lenSending;
}否则{
中断;
}
}
if (lenSending >=0){
lenSend=sl_Send (sd、buf、len、flags);
if (lenSending >=0){
lenSent+=lenSending;
返回长度;
}
}
返回长度;
}
此致、
Luke
您好、Luke、
实际失败的是什么? 您是否看到返回了错误代码或 API 挂起?
此致、
Sarah
尊敬的 Sarah:
如果 sl_Send ()或 sl_Recv ()的数据包长度为397个或更多字节,则 TCP 数据包本身可以成功传输。 但是、以下代码无法接收任何中断、包括 GPIO 触发的中断和 SPI/UDMA 触发的中断。
"cc32xxsf_tirtos.cmd"中的堆栈大小从1024字节放大到4096字节:
--stack_size=4096 /* C stack 也用于 ISR 堆栈*/
你有什么建议吗?
感谢你能抽出时间。
此致、
Luke
您好、Luke、
您能否 在 ROV 中调试器件状态? 这是 用户指南 、 TI-RTOS 基础 知识 SimpleLink Academy 中还有两个调试工具部分。
此外、请确保您已将最新的服务攻击刷写到 CC3235。
此致、
Sarah
尊敬的 Sarah:
是否必须通过 JTAG 引脚使用 ROV?
目前、我将 CC3235SF LaunchPad 的 UART_TX/UART_RX 连接到我们自己的板、并在上面安装 CC3235MODSF。
我能否通过 UART_TX/UART_RX 引脚使用 Code Composer Studio 10进行调试?
感谢你能抽出时间。
此致、
Luke
您好、Luke、
是的、您需要使用 JTAG 或 SWD 来从 CCS 进行调试并使用 ROV。 不支持通过 UART 进行调试。
也许您可以在移除其他硬件可靠性后直接在 LaunchPad 上运行代码。
1月
尊敬的 Jan:
得到了、感谢您的即时回复。
此致、
Luke
尊敬的 Sarah:
我使用从"迁移指南"复制的"OSI.h"和"OS_POSIX.c"查看了从 CC3200迁移到 CC3235的代码。
为了与 CC3200 "wlan_ap"示例相同、我是否应添加以下定义?
在"os_posix.c"中
#define SL_platform_multi_threaded
在"Udma_if.c"中、从 "cc3200-sdk\examples\common "复制
#define USE_TIRTOS
感谢你能抽出时间。
此致、
Luke
您好、Luke、
我猜是这样。 你试过吗?
此致、
Sarah
尊敬的 Sarah:
我尝试了两种方法:使用和不使用定义。
这两种方法都起作用。
但是、我遇到了一个奇怪的情况、即代码在有或没有上述定义的情况下停止运行。
在我们自己设计的电路板上、FPGA 是 SPI 主设备。 CC3200/CC3235是以 DMA 模式运行的 SPI 从器件。
SPI DMA Rx 中断预计会定期接收、以处理来自 FPGA 的传入 SPI 数据。
当 AP 模式设置被改变并且 sl_Stop()被调用后被 SPI DMA Rx 中断时、代码暂停。
通过进一步调试,根本原因是 sl_Stop()清除 UDMA 时钟选通位,并且由于 没有时钟,下列 UDMASetupTransfer()挂起。 我需要通过添加以下行来修补代码以启用 uDMA 时钟:
HWREG (ARCM_BASE + APPS_RCM_O_UDMA_CLK_Gating)|= PRCM_RUN_MODE_CLK;
在 CC3200中,sl_Stop()不清除 UDMA 时钟选通位。
感谢你能抽出时间。
此致、
Luke