主题中讨论的其他器件: UNIFLASH
工具/软件:Code Composer Studio
我在定制板上使用 CC1312R 芯片、并在刷写时使电路板正常工作存在问题。 我使用 的是 simplelink cc13x2_26x2_SDK 版本3.10.01.11。
当我使用 CCS 中的调试功能和 XDS110调试探针时、芯片会像应该那样通过 UART 发送数据。 但是、当我将.bin 刷写到芯片中时、我无法通过 UART 打印任何内容(这是查看电路板是否正在运行的唯一方法)。
我在从调试探针刷写和断开连接一次之后、已通过 UART 进行打印、但此后无法打印。
我将在 post-build 步骤中使用"${CCS_INSTALL_ROOT}/utils/tiobj2bin/tiobj2bin.bat ""${BuildArtiftFileName}"${BuildArtifactFileBaseName}_X_xx.bin""${CG_TOOL_ROOT}/bin/ofd470.exe ""${CG_TOOL_ROOT}/bin/hex470.exe ""${CCS_INSTALL_ROOT}/utils/tiobj2bin/mkhex4bin.exe 生成.bin。
另一个可能相关的问题是,当调试少数特定的 System_printf()调用时,有时我会通过 UART 获取垃圾值(只是一个简单的“从这里获取”字符串)。 问题似乎间歇性地发生。
我的代码如下:
/*!
*@简介 主任务函数
*
*@param A0 -
*@param A1 -
*/
void
appTaskFxn (UARg a0、UARg A1)
{
int32_t retval = 0;
#ifndef power_MEAS
#if defined (Board_display_use_UART)
//初始化 UART0以进行制造商配置并测试
UART_init ();//调用 simplelink SDK
/*启用 System_printf (..) UART 输出*/
UART_PARAMS_INIT (&uartParams);
uartParams.波特 率= 9600;
//将 UART 设置为读取超时。 readTimeout 单元是系统时钟节拍。
// clock_tick_period 以微秒为单位。
uartParams.readTimeout
= UART_READ_TIMEOUT_seconds
*(microseconds_per_second / clock_tick_period);
uartParams.writeDataMode = UART_DATA_binary;
uartParams.readDataMode = UART_DATA_binary;
// Echo 会导致外部自动测试设备出现故障。
uartParams.readEcho = UART_ECHO_OFF;
uartCfg = UART_OPEN (Board_UART0、&uartParams);
//如果 UART_OPEN 失败
(uartCfg = NULL)
则停止{
while (1)
{
;
}
}
UartPrintf_init (uartCfg);
#endif // Board_display_use_UART */
#endif // power_MEAS *
///??? BIOS_start 似乎清除了 RTC,所以初始化需要
//延迟
//??? 需要连接主机计算机时间(&secs_1970);
//??? HWREG (AON_RTC_BASE + AON_RTC_O_SEC)= secs_1970;
#ifdef TIMAC_AGAMA_FPGA
/* FPGA Build 禁用功率限制*/
power_setConstraint (PowerCC26XX_IDLE_PD_Disallow);
power_setConstraint (PowerCC26XX_SB_disallow);
IOCPortConfigureSet (IOID_20、IOC_PORT_RFC_GPO0、IOC_STD_OUTPUT);
IOCPortConfigureSet (IOID_18、IOC_PORT_RFC_GPI0、IOC_STD_INPUT);
//配置射频内核 SMI 命令链路
IOCPortConfigureSet (IOID_22、IOC_IOCFG0_PORT_ID_RFC_SMI_CL_OUT、IOC_STD_OUTPUT);
IOCPortConfigureSet (IOID_21、IOC_IOCFG0_PORT_ID_RFC_SMI_CL_IN、IOC_STD_INPUT);
#endif
#ifndef OSAL_PORT2TIRTOS
/*初始化 iCall 模块*/
iCall_init();
#endif
////*从 CCFG 区域复制扩展地址*//
memcpy (ApiMac_extAddr、(uint8_t *)&(__ccfg.CCFG_IEEE_MAC_0),
// (APIMAC_SADDR_EXT_LEN / 2));
// memcpy (ApiMac_extAddr +(APIMAC_SADDR_EXT_LEN / 2)、(uint8_t *)&(_ccfg.CCFG_IEEE_MAC_1)、
// (APIMAC_SADDR_EXT_LEN / 2));
/*检查 CCFG IEEE 是否有效*//
只需使用硬件地址。 忽略 ccfg 文件中的内容。
// if (memcmp (apiMac_extAddr、dummyExtAddr、APIMAC_SADDR_EXT_LEN)=0)
{
/*否,它无效。 获取主要 IEEE 地址*/
memcpy (ApiMac_extAddr、(uint8_t *)(FCFG1_base + EXTADDR_OFFSET)、
(APIMAC_SADDR_EXT_LEN);
}
Task_sleep (300000);//睡眠3秒以使时钟保持稳定? 建议在线
System_printf ("在 appTaskFxn\r\n"中);
retval = SysCtrlResetSourceGet ();
System_printf ("复位源=%d\r\n"、retval);
Task_sleep (0x2000);
//初始化应用程序*/
#ifdef OSAL_PORT2tinit*
;#taskId_turateId*;#init*任务#t_turt_t_taskId*
/*启动应用程序-永久循环*/
while (1)
{
System_printf ("在循环中...");
//等待1秒
Task_sleep (100000);
}
}
int main (void)
{
Task_Params taskParams;
int32_t retval = 0;
#ifndef USE_DEFAULT_USER_CFG
macUser0Cfg[0].pAssertFP = macHalAssertHandler;
#endif
/*
LED 等与电路板相关的东西进行初始化
遵循 TI-RTOS 惯例
*
PIN_init (BoardGpioInitTable);
#if 已定义(POWER_MEAS)
/*禁用外部闪存以进行功率测量*/
Board_shutdownExtFlash();
#endif
//??? 即使不是 OAD、我们也会使用 SPI
//#if defined (feature_BLE_OAD)|| defined (feature_native_OAD)
spi_init();
//#endif
i2cSetup ();
//init_config_phy_id ();// macTaskInit 需要此信息。
//针对 SafeSense 集成删除
#ifdef OSAL_PORT2TIRTOS
_macTaskId = macTaskInit (macUser0Cfg);
#endif
/*配置任务。 *
Task_Params_init (&taskParams);
taskParams.stack = appTaskStack;
taskParams.STACKSIZE = APP_TASK_STACK_SIZE;
taskParams.priority = app_task_priority;
Task_construct (&appTask、appTaskFxn、&taskParams、NULL);
#ifdef DEBUG_SW_TRACE
IOCPortConfigureSet (IOID_8、IOC_PORT_RFC_TRC、IOC_STD_OUTPUT
| IOC_CURRENT_4mA | IOC_SLEW_ENABLE);
#endif /* debug_sw_trace *
BIOS_start();//启用中断并启动 SYS/BIOS */
返回(0);
}
如果您需要任何其他信息、请告诉我。 感谢您对此提供的任何帮助。