Blog's Home

越努力,越幸运!

知识体系构建

本文主要梳理总结一下未来三年内需要进一步掌握学习的知识,包括近期的和长期的,行业相关的与非行业相关的。

一、USB协议

这个东西纠结了几年了,一直在用USB相关的功能,但是却总是一知半解,如雾里看花,最近下定决心要看一下USB相关的协议,也已经看了一部分了。USB协议,一般来说,我们做固件的,也就是完成USB Device功能,USB Host一般会由PC机来完成,这其中,USB针对不同的应用有不同的协议规范,比如说HID、AUDIO等,需要了解的东西就是USB的一些接口电气定义,比如引脚上下拉区分不同的速率、USB的枚举过程、USB的通信类型等,基本上,在USB 2.0规范里面,也只需要看大概3个章节的东西就够了,当然,还是要结合下代码才能加深理解。

MCU更换问题总结

最近由于疫情问题,欧美等许多国家电路企业停工,同时因为疫情,各种居家办公、远程视频等设备需求增加,美国对华为等的制裁,导致这些公司大量囤积芯片,由于以上原因,全球范围内晶圆产能严重缺乏,从而引起各种芯片大幅涨价。ST的MCU也不例外,我们公司现在正在使用的STM32F072CBT6这款芯片就是如此,价格大概涨到了原来的10倍之多,出于成本考虑,所以公司决定找替代芯片。

找替代芯片,当然最好是pin to pin,功能能够完全兼容的,而能够替代STM32F072CBT6的,有其他非ST品牌的芯片,也有同品牌的STM32F103CBT6,当然,为了顺利替代,并投入最少的开发测试成本,最佳方案就是使用同一品牌的芯片来替代,所以就选择了STM32F103CBT6来替代STM32F072CBT6。

KEIL MDK与USB DP上拉问题总结

1、KEIL MDK修改了工程文件夹的名称后,一定要修改MDK文件夹里面几个工程相关的文件的名称,否则编译时会报错,提示“browse information of one or more files if not available.”

2、USB DP脚上拉注意

这个问题是因为要更换MCU发现的,原来的MCU是STM32F072CBT6,这款芯片内部是有可程控的DP上拉电阻的,即芯片内部自带了DP脚的上拉电阻,可以通过程序来选择用或是不用。现在更换的MCU是STM32F103CBT6,两款MCU是pin to pin的,基本上可以直接替换使用,但是在USB这里,这款芯片没有自带的DP脚上拉电阻,所以需要外部电路添加一个上拉电阻接到DP脚。我试了把DP脚直接接到5.0V,发现电脑无法识别驱动,然后我把DP脚接一个2.7K的电阻上拉到5.0V,电脑就能够正常识别到USB驱动了,之后我再试了把电阻改成1.5K,然后上拉到3.3V,发现电脑也是可以正常识别驱动的。3种尝试结果列举如下:

THD+N ratio与THD+N level换算

 For THD+N Level, the measured distortion plus noise (the signal with the stimulus tone removed) is expressed as an rms level.

对于THD+N电平,测量的失真加上噪声(去除刺激音的信号)表示为均方根电平。

电子电路实践知识

 1、差分信号

差分信号就是一个信号用两条线来传输,总的电平幅度是两条信号线上幅值之和。例如,使用AP输出3.36Vrms的平衡信号,则可以测到每条信号线上电平大小是3.36/2=1.68Vrms的信号,这个可以通过示波器来测量,也可以直接用万用表的交流电压档来测。

2、ADC满量程输入

所谓满量程输入,就是输入多大的信号时,ADC的数字输出端信号大小为0dBFS,这个满量程输入的电压大小,ADC的数据手册上一般都有写。换一种说法,ADC采样时会有一个参考电压,如果输入信号的大小等于这个参考电压,则此时ADC输入就已经达到了满量程。

I2C协议详解及软件模拟实现

待续。

野火的STM32教程,至少在软件模拟I2C这一节,简直就是误人子弟,在读写过程中连IO的输入输出方向切换都没有,太烂了。

UART协议详解及软件模拟实现

 待续

I2S协议学习

 先贴篇写的不错的文章。

数字音频接口(I2S,PCM/TDM,PDM)

问题总结

 1、如果使用一个宏定义包含多条语句或多个表达式,一定要加上花括号。

#define LED1_ON()    LED1 = 1; \
                     led1 = 1;
for (i = 0; i < n; i++)
    LED1_ON();

如上所示,如果for()这样接这个宏,则只有宏中定义的第一语句会被执行。原因是这里的宏没有加花括号,第2条语句不包含在循环执行动作里面,所以就会导致不易发现的bug。上述宏定义应该改成如下形式:

STM32几种库空间占用与执行效率对比及C语言枚举的特别用例

1、STM32标准库与Cube、LL及直接写寄存器的对比

如上图示为STM32标准库与Cube库、LL库及直接写寄存器在ROM、RAM的空间占用以及执行效率上的对比,可以看出,不管是在空间占用还是执行效率上,直接写寄存器永远都是性能最好的方式,不过一般开发中不会用这种方式,因为不便于移植,所以用的最多的还是几种库。

«3456789101112»
欢迎来到Logic的博客,本站点不定期进行博文更新,敬请期待!
  [查看权限]

站内搜索
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合

Powered By Z-Blog 2.2 Prism Build 140101

Copyright © 2015 by Logic. 本站文章除特别声明系转载外,均保留所有权利.
知识共享许可协议本作品采用知识共享署名 2.5 中国大陆许可协议进行许可,欢迎转载,但请注明来自Blog's home,并保持转载后文章内容的完整。        

您的鼓励是对我最大的认可