TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2640R2F被特斯拉线圈打死机, 看门狗不起作用

用特斯拉线圈靠近CC2640R2F IC , CC2640R2F会死机 , 看门狗没有起到作用 , 死机后无法自动恢复 , 需要硬件复位或重新上电才能恢复工作。

之后我直接使用 bim project 进行调试 , 先初始化 IOID_13 用以观察MCU工作状态 , 再初始化watchdog 设为9秒超时 , 最后进入死循环并不断反转 IOID_13 , 代码如下:

void main(void)
{user_delay_us(100000);uint8_t cnt = 9;while( cnt-- ){user_gpio_init();GPIO_setDio(IOID_13);user_delay_us(20000);GPIO_clearDio(IOID_13);user_delay_us(20000);}user_watchdog_init();user_watchdog_set_reload( 9 * 1500000 );// 9秒user_gpio_init();while( 1 ){user_gpio_init();GPIO_setDio(IOID_13);user_delay_us(100000);GPIO_clearDio(IOID_13);user_delay_us(100000);}
}
void user_watchdog_handler( void )
{uint8_t cnt = 9;while( cnt-- ){user_gpio_init();GPIO_setDio(IOID_13);user_delay_us(50000);GPIO_clearDio(IOID_13);user_delay_us(50000);}HAL_SYSTEM_RESET();/* 10ms后复位: 看门狗第一次溢出进入中断后, 须再次溢出才会产生复位 */
//user_watchdog_init();
//user_watchdog_set_reload( 1500 * 10 );while( 1 ){user_gpio_init();GPIO_setDio(IOID_13);user_delay_us(20000);GPIO_clearDio(IOID_13);user_delay_us(20000);}
}

正常工作时 , IOID_13会一直反转 , 9秒之后会产生复位并重新开始运行 ;

当我在9秒超时之前( 例如从第3秒 至 第6秒 这三秒内持续干扰 )用特斯拉线圈进行干扰 , 干扰结束后 IOID_13 输出仍然是正常的 , 但当9秒超时复位之后 , IOID_13就不再有信号输出 , 说明CC2640R2F已死机。

我有在 watchdog 中断函数中调用HAL_SYSTEM_RESET() 来复位 , 现象没有变化 , 仍然会死机。

 

所以现在的问题是 : 特斯拉线圈打完干扰之后 CC2640R2F工作还是正常的 , 但只要之后发生一次软件复位( watchdog reset 或 HAL_SYSTEM_RESET() 产生的复位 ) , CC2640R2F就会死机。

Viki Shi:

特斯拉线圈本身就会产生电磁干扰,如果产品需要在这种环境中使用,建议硬件加强防护,比如 对关键电路添加电磁防护措施

赞(0)
未经允许不得转载:TI中文支持网 » CC2640R2F被特斯拉线圈打死机, 看门狗不起作用
分享到: 更多 (0)