浅析printf中的变参传递

这篇文章主要探讨一种printf的实现,这个是一个实时地记录,错误在所难免,还请谅解。原型首先我们来看看printf的实现原型:typedef struct { int32_t dest; // 定义输出终端 void (*func)(char); // 定义输出函数 char *loc; } PRINTK_INFO; int pri...

继续阅读 »

SPI传输出错引起的思考

SPI是一种常见的串行通信协议,在MCU中也有广泛应用,最近项目中我们发现SPI在传输过程中偶尔会出现数据错误,下面就对这个问题的原因以及有效的解决方法做一个简单的记录。问题描述问题出现在两个SPI互联的时候,当两个SPI同时开启high drive的时候,slave端向master端发数据的时候出现错误,分析过程中我们抓取了如下的波形:实际发出是数据应该是0xAAAA,从上面波形中可以看出...

继续阅读 »

MCU 电流测试

MCU电流测试说起来似乎就是加个电流表读读数就可以了,但实际上并没有那么简单,我们知道MCU里面为了低功耗考虑,各种模块都会加入门控时钟,这样可以在不用的时候关掉时钟,从而降低功耗,另外core的频率,bus频率,flash频率等等都是可以配置的,所以在测量电流的时候,这些因素都要考虑。这个也提高了电流测试的难度,尤其是不同人,不同芯片,不同程序,不同配置下测试都会有偏差。

继续阅读 »

DSC核下的时钟调试

从ARM核转到DSC核下面各种不适,今天就这些不适的症状做一个简单的介绍。工具的各种不适DSC现在使用的还是古老的Eclipse编辑器,界面古老且使用各种不便,安装也是各种复杂,为了支持DSC还要安装相应的升级扩展包。另外DSC使用的是P&E的调试器,这个调试器真是不负其名,使用之前要经过各种调试,不过好歹还是可以用了,据说是P&E CEO亲自上阵解的bug。曾几何时我也是Eclip...

继续阅读 »

FTDI FT232芯片VCCIO供电引起的一个小问题

FT232是串口转USB常用的一款芯片,最近项目中也是用的这个芯片,不过在使用过程中遇到一个小小的问题,这里记录一下。首先我们来看看我们的应用场景,其实也比较简单,就是直接用这个芯片和MCU的串口连接,将UART转换成USB连接电脑,非常典型的应用,不过比较特殊的是我们的MCU可选择外部供电也可以选择用FT232上面的3V3的LDO输出,MCU串口输出的电平可能是3.3V也可能是1.8V,因...

继续阅读 »