在调试nRF52832的uart的过程中,发现调试信息会时不时打印“APP_UART_COMMUNICATION_ERROR”这个错误,看上去似乎毫无规律。查看SDK的相关说明,可以大致知道打印这个的提示的原因是uart硬件接收到了一些错误数据。但是为什么会收到错误数据呢?

经过反复试验,发现只要用手触碰到芯片的RX引脚,就会打印这个错误提示。由此,可以推测是手触碰到uart的接收脚,触发了uart的接收,但是又没接收到正确数据,所以才导致了这个问题。说到这里,能很自然地想到这一定是和芯片的管脚输入模式有关。博主之前有写过一篇文章《触摸单片机的IO会使单片机死机的问题》,文中所写的问题,与当前这个问题本质上是一样的,都是由于输入管脚浮空造成的。

通过不断追踪uart初始化代码,发现SDK确实是把RXD引脚默认设置成了浮空输入。代码如下:

在“nrf_drv_uart.c”文件的第110行:

__STATIC_INLINE void apply_config(nrf_drv_uart_t const * p_instance, nrf_drv_uart_config_t const * p_config)
{
if (p_config->pseltxd != NRF_UART_PSEL_DISCONNECTED)
{
nrf_gpio_pin_set(p_config->pseltxd);
nrf_gpio_cfg_output(p_config->pseltxd);
}
if (p_config->pselrxd != NRF_UART_PSEL_DISCONNECTED)
{
nrf_gpio_cfg_input(p_config->pselrxd, NRF_GPIO_PIN_NOPULL);
}

把代码中的“NRF_GPIO_PIN_NOPULL”,改成“NRF_GPIO_PIN_PULLUP”即可解决这个问题。

nRF52832出现“APP_UART_COMMUNICATION_ERROR”的错误的问题的更多相关文章

  1. nRF52832定时器

    1概述 定时器能够被配置为两种模式:定时模式和计数模式,nrf52832有五个定时器,timer0--timer4 . 2常用得函数 函数功能:初始化定时器 ret_code_t nrf_drv_ti ...

  2. 航空概论(历年资料,引之百度文库,PS:未调格式,有点乱)

    航空航天尔雅 选择题1. 已经实现了<天方夜谭>中的飞毯设想.—— A——美国2. 地球到月球大约—— C 38 万公里3. 建立了航空史上第一条定期空中路线—— B——德国4. 对于孔明 ...

  3. nRF52832的SAADC

    SAADC部分思维导图 1ADC原理 1.1主要特点 1)8/10/12分辨率,使用过采样可达到14位分辨率 2)多达8个通道 单端输入时使用1个通道,2个通道可组成差分输入 单端和差分输入时均可配置 ...

  4. NRF52832初步使用

    开发环境搭建 开发环境涉及到协议栈SDK版本.keil PACK版本的匹配问题,目前测试通过的环境如下: windows系统:win10 硬件:NRF52832测试板.JLINK-V8仿真器 Keil ...

  5. nRF52832之硬件I2C

    这几天一直在折腾nRF52832的硬件I2C,到了今天最终出现了成果,在此也印证了那句话:"耕耘就有收获" 52832的硬件I2C尽管官方提供了demo,可是自己对I2C通信理解的 ...

  6. nrf52832蓝牙开发踩过的坑

    接触nrf52832芯片已经有一段时间了,记录我踩过的坑.这些坑大多都补回来了,愿后来的开发者没有坑~ 先来点开胃小菜 一.环境问题 安装离线包遇到的错误--svdconv exited with a ...

  7. 日期格式代码出现两次的错误 ORA-01810

    错误的原因是使用了两次MM . 一.Oracle中使用to_date()时格式化日期需要注意格式码 如:select to_date('2005-01-01 11:11:21','yyyy-MM-dd ...

  8. ASP.NET Core应用的错误处理[3]:ExceptionHandlerMiddleware中间件如何呈现“定制化错误页面”

    DeveloperExceptionPageMiddleware中间件利用呈现出来的错误页面实现抛出异常和当前请求的详细信息以辅助开发人员更好地进行纠错诊断工作,而ExceptionHandlerMi ...

  9. ASP.NET Core应用的错误处理[2]:DeveloperExceptionPageMiddleware中间件如何呈现“开发者异常页面”

    在<ASP.NET Core应用的错误处理[1]:三种呈现错误页面的方式>中,我们通过几个简单的实例演示了如何呈现一个错误页面,这些错误页面的呈现分别由三个对应的中间件来完成,接下来我们将 ...

  10. 实时的.NET程序错误监控产品Exceptionless

    Exceptionless可以对ASP.NET, Web API, WebForms, WPF, Console, 和 MVC 应用提供错误监控.上传.报表服务.使用时需要在Exceptionless ...

随机推荐

  1. linux 查看product_uuid,即主板id,机器识别码,需要root权限

    1. 用命令 sudo dmidecode  | grep UUID 或者 sudo lshw  | grep uuid 2. 直接查看文件描述 sudo cat /sys/class/dmi/id/ ...

  2. php redis使用 常用方法 | Windows环境下安装Redis | Windows下php安装redis扩展(详解版)

    redis可视化工具:http://www.treesoft.cn/dms.html #php redis使用 常用方法 https://www.cnblogs.com/mg007/p/1043107 ...

  3. Demo of canvas, canvas optimization and svg

    It used the canvas to draw the curves in the old project, and the client felt that it was vague, so ...

  4. 百度云+Zotero进行知识管理的方法

    首先,要在zotero的首选项的文件与文件夹里去自定义你的zotero文件夹,这个文件夹就是你的zotero软件的文档存储编辑的文件夹,本来默认是在电脑用户里自动创建的,比如hp/user/zoter ...

  5. HTML弹出对话框功能大全

    注://关闭,父窗口弹出对话框,子窗口直接关闭 this.Response.Write("<script language=javascript>window.close();& ...

  6. android gradle配置及编译command

    build.gradle apply plugin: 'com.android.application' android { compileSdkVersion rootProject.ext.and ...

  7. Hub

    public class StreamHub : Hub { public ChannelReader<string> ReadLogStream() { var channel = Ch ...

  8. ICPC2020上海B - Mine Sweeper II

    思维 [B-Mine Sweeper II_第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(上海)(重现赛)@hzy0227 (nowcoder.com)](https://codeforc ...

  9. python web学习

    Web http.server 最简单的,一句命令搞定: # python -m http.server 8001 然后一个常见的文件目录下载竟然就搞定了,太神奇了: WSGI接口 Web Serve ...

  10. vue点击遮罩层阴影区域隐藏

    <div class="overlay" v-if="mask" @click="closeMaskTap($event)"> ...