看了楼上的几篇回答,我告诉你可以玩,但是没有数电模电等知识会制约你玩的高度。
单纯的玩单片机还可以
如果只是简简单单的玩单片机,完全可以,因为单片机说简单点就是控制每个引脚,到什么时间干啥事情。我记得我刚刚接触单片机的时候是高中,那时候也不懂什么寄存器啥的。买的一块Arduino,跟着网上的例程玩呗,刚刚开始点亮一个LED灯,后面就是做呼吸灯啥的,你看没有数模点的基础不也照样玩嘛。
上面是Arduino,下面是ST公司的低功耗开发板
简单的玩还是可以的。
进阶的玩,没有数模电不行!!!
为什么说不行呢?
首先不说单片机内部的问题,先说说外围的电路吧。
假设你只有三个GPIO,但是你得控制8个LED闪烁。没有数电你能够搞定?
学过数电的人肯定可以想出来使用译码器。
74LS138
。
来一个高阶的
假设你会使用单片机内部的ADC,现在要进行电压快速的采样,不过你的ADC的采样率只能100K,按照奈奎斯特采样定理,你最多能采集50Khz的信号,那么你外部不添加滤波器你采样的信号就有可能出现问题。这个问题是我最近在搞STM32单片机的FFT遇到的一个问题。
10K的采样率,1024点FFT
假设你得采集一个非常微弱的电压信号,可是按照单片机内部的ADC的分辨率来说不一定能够采集到。那么你怎么玩?
这个时候你不加外部的放大器你压根采集不到,不仅需要模电而且需要很灵活的用到模电,放大电路还有很多种呢,同相比例,反向比例。为什么要用差分,在不同的环境下的需求不一样,放大电路也得跟着动态调整。
在说ADC,目前大家使用的片内ADC只能采集到正电压,我想问你如果这时候需要采集负电压怎么办?
那就可以用运算放大器把电压抬起来呀,或者简单点使用二极管钳位一下,还有我在野火的教学视频中看到一个使用四个电阻制作的可以采集负电压的电路,使用到基尔霍夫定律,你说你没有模电的基础你连ADC只能采集到正电压。
说了一些外部电路的问题,那回头看看内部的问题吧。
我想问一下单片机内部的输出速度有什么区别?
如果学过STM32单片机的人都知道GPIO在作为输出的时候有一个输出速度的配置,请问那是干啥的,为什么有不同速度。很多人查资料说是功耗,那么为什么功耗有区别,其实这个我现在也是稀里糊涂的貌似在开发的时候没有遇到这些问题。但是一些对功耗有需求的项目,能不能考虑到这一点呢?不知道楼主的玩是什么样的玩法,是玩个三四天就吃灰吗?
我还想问一下单片机GPIO的上下拉有啥用,为什么要上下拉。我记得我有个同学,他在使用编码器想看看电机转的多快的时候,一致读编码器的数据是有问题的,把我喊过去看,我看了他编码器的型号看了手册后发现输出要上拉电阻,没有上拉电阻的话编码器的输出幅度很小,可以使用示波器查看。结果我哪个同学就在编码器的输出上焊了上拉电阻。我在问题主,上拉电阻多大才行呀???结果我哪个同学还是不能读出编码器的数据又喊我过去看,我通过示波器查看波形输出正常,为啥单片机的触发不对呢?自己看他写的代码,他尽然把单片机的GPIO上拉了高电平。。。。我服了。单片机空闲状态下本来就是高电平了,怎么可能采集到真确的数据呢。我叫他换成下拉试试,结果就好了。你说一个上拉电阻不是数模电的知识吗?
我还想问一下单片机GPIO推挽输出和浮空输出分别用在什么场合?你要不懂会不会导致你写的代码实现不了你想要的功能?
总结:如果你想玩单片机,而且想要玩的还不错那就得学习数模电,甚至你得拥有自动控制,信号与系统,数字信号处理等知识单片机只是一个载体。可以说是一种实现功能的工具,具体如何实现,还得依靠很多其他的知识。
使用Matlab生成的滤波器系数
比如我最近在研究的数字滤波器就用到了大量的数字信号处理的知识,如果你后面想用单片机或者其他的期间如FPGA,DSP等完成信号的调制与解调那你得知道通信原理,高频电路等知识。
现在很多的学科都是要与其他学科联系在一起得了,加油学的越多越发觉自己不会的更多 |