【NRF52840】SWD调试口短路问题排查以及解决

问题场景:

主控芯片使用NRF52840,直引SWD调试、烧录口至板边的3PIN WAFER连接器,分别为数据SWDIO、时钟SWDCLK和地GND。


问题描述

在日常调试时,软件同事时常反馈,设备无法被识别,也无法烧录程序,且故障率偏高。

并不是每次调试、烧录热插拔都会发生故障,但在日常调试时反复热拔插,会不经意地在某个设备复现。


问题排查:

使用热风枪吹焊,更换新的主控芯片NRF52840,设备可正常识别、烧录。

万用表测量发现SWD IO对地短路。


问题分析:

静电击穿。


解决方案:

在数据SWDIO、时钟SWDCLK上加ESD元件。

请添加图片描述

问题复查:

后续加ESD的改版,SWD调试口对地短路的故障复现很少。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nrf52840上,P0.22可以被配置为PWM输出。要启用高分辨率模式,您需要使用EasyDMA来传输数据。下面给出了一些基本的代码示例,可以指导您如何配置P0.22为PWM高分辨率模式。 首先,您需要在nrfx_pwm.h头文件中定义一个nrfx_pwm_config_t结构体来配置PWM通道。以下是一个示例: ```c nrfx_pwm_config_t const config = { .output_pins = { NRF_GPIO_PIN_MAP(0, 22), // P0.22 NRF_PWM_PIN_NOT_USED, NRF_PWM_PIN_NOT_USED, NRF_PWM_PIN_NOT_USED, }, .irq_priority = APP_IRQ_PRIORITY_LOWEST, .base_clock = NRF_PWM_CLK_16MHz, .count_mode = NRF_PWM_MODE_UP, .top_value = 1000, .load_mode = NRF_PWM_LOAD_COMMON, .step_mode = NRF_PWM_STEP_AUTO }; ``` 接下来,您可以使用以下函数来初始化PWM通道: ```c nrfx_pwm_init(&m_pwm0, &config, NULL); ``` 然后,您需要创建一个数组来存储PWM数据,并使用以下代码来将数据传输到PWM通道中: ```c uint16_t const seq_values[] = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000}; nrf_pwm_values_individual_t seq_values_individual[] = { {0, seq_values[0]}, {0, seq_values[1]}, {0, seq_values[2]}, {0, seq_values[3]}, {0, seq_values[4]}, {0, seq_values[5]}, {0, seq_values[6]}, {0, seq_values[7]}, {0, seq_values[8]}, {0, seq_values[9]} }; nrfx_pwm_simple_playback(&m_pwm0, &seq, 1, NRFX_PWM_FLAG_LOOP); ``` 在这个例子中,我们将PWM输出设置为循环模式,并在10个步骤中输出不同的PWM值。 最后,您可以使用以下代码停止PWM输出: ```c nrfx_pwm_stop(&m_pwm0, true); ``` 希望这能帮助到您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值