1. stm32信号发生器proteus
professional的使用教程如下
1、打开Proteus8.6软件。
2、点击菜单栏file——找到New Project——鼠标左键单击。
3、修改工程名字和工程路径——单击next直到finished并完成建立工程——在键盘上按字母P或者找到工作区的P按钮——跳出搜索元器件界面——输入STM32F103R6——RES和LED-RED找到对应的器件——鼠标左键双击。
4、在工作区——完成STM32电路连接——并双击StM32F103R6——设置晶振为8M——并设置Proteus电源——避免运行出现错误。
2. stm32 dds信号发生器
从大一的时候在大学图书馆看到关于AVR单片机的书籍,到参加竞赛、工作,我和单片机已经打了六七年的交道了吧。其间我都是在做产品的软件开发,与硬件工程师合作,根据需求选择合适的单片机型号和外围器件,完成代码编写。积累了一点对单片机选型、特点的认识。
所以这篇想谈谈关于单片机特点和选型。
单片机
MCU,微处理器,他有很多名字,但是我还是喜欢叫他单片机,因为他就是单单的一片,没什么其他的模块,一片里面就集成了CPU,RAM、ROM等,冯·诺依曼必有的结构单元。只要外部给他晶振,给他电源,他就能像计算机一样工作起来。高级一点的单片机内部RC就能起振,外部晶振都可以免去,只要外部给个稳定的3.3V,就可以工作。
单片机设备做的可以有多小?看到老外玩的蚊子飞机,就知道了,大学的时候非常的震惊,也是这样,让我对飞行器着迷不已。
听过一个趣闻,就是为什么一个字节是8个BIT,而不是12个?据说是最早的芯片,因为工艺限制了,只能有八个引脚,想要更多的引脚怎么办,多用几个八脚芯片就好了,于是1个字节对应一个芯片,一个芯片的八个脚对应八个比特就顺理成章了。
计算机的技术从来都是往两个方向发展的,一个是计算速度快,资源多,同时可处理的事件多,相对应的,功耗大,体积大。一个就是计算速度慢,资源少,但是价格低廉,体积小,功耗低。
前者所发展而来的就是咱们的计算机,WINDOWS\LINUX操作系统,后者就是单片机系统了,各种嵌入式操作系统。手机的范畴有点迷了,我还是愿意把手机放在单片机系统这个层面来看。
在从业人数规模来看,前者发展出来的计算机,软件编程带动了多少人的就业,我们把这从事这职业的人叫做“码农”,他们的工作就是在前人对计算机一层一层又一层的封装下,进行针对应用的开发。顶层软件层的开发需要,促成JAVA、C#、PYTHON这样的语言出现,这些语言本身不涉及底层,只是调用底层的接口函数。显而易见的,想通过JAVA让计算机主板发出一个方波信号出来,是何等困难,但对应的是用JAVA在通用电脑屏幕上显示一串数字是何等的简单。
后者单片机,开发的人数就不如通用计算机了,单片机资源少,可用的“轮子”少,啥玩意都需要自己自力更生。能快速的发出方波,如果有DDS芯片的话,可以调制出正弦波,等等通用主机模块做不到的功能。更加的自定义!缺陷的话,显而易见的,想通过单片机在屏幕上显示一串HELLO WORLD字符,那得是进阶的人才能做到的咯!
所以单片机软件开发不是“纯软件”开发,也需要对硬件有相当的学习,对数字电路、模拟电路也要了解才行。这一行门槛高,很难速成,一定是慢慢积累~
是否“裸奔”
裸奔,顾名思义就是单片机穿不穿衣服?衣服是啥,操作系统呗!
选单片机的时候,根据需求不同,首先要选此单片机是否需要跑操作系统,还是裸奔。
· 当需要用复杂协议栈的时候,操作系统变得非常有用。
例如,希望咱们的单片机可以连互联网,通过网线联网,或者通过WIFI信号联网,那么多半需要运行操作系统,如果不跑操作系统也行,但是工作量很大,不稳定。
工程师需要比方案,咱们比比方案。
1 、开源的RTOS几乎都提供TCP/IP协议栈,社区的开源代码经过很多人,很多年的稳定运行。
2、自己写TCP/IP协议栈,嵌入到裸奔工程中,稳定性未知,BUG数量未知。
两个方案肯定选择前者,笔者自己试过在ENC28J60网卡芯片上自己硬刚协议栈,其中艰难不言而喻,到最后还是妥协选择开源社区。
·当需要运行多个复杂任务的时候,操作系统很有用
操作系统提供TASK机制,消息管理机制,如果上位机编程经验的人,对线程会有很深刻的理解,不同的TASK就是不同的线程。有了TASK机制,对任务的管理就会方便的多。好像安卓系统运行起来了,咱们可以用JAVA为他随时增加新功能,下个APK包,安装就好了,对吧。
什么时候,我会选择裸奔单片机?
裸奔有裸奔的好处,笔者怕黑。认为“上位机”开发人员之所以天天加班,有干不完的事,改不完的BUG,最大的原因就是“黑”。黑盒子太多了。黑盒子指的是一个程序块,这个程序块你压根不知道他是怎么实现的,你只知道他提供什么功能,至于自己是不是正确的调用了黑盒子的接口,你只能通过文档去看,然后就不断不断的试错,效率极低。所以很多时候大神上位机开发人员,是对黑盒子(某语言提供的对象、方法)有深刻掌握的人!
裸奔的单片机不一样,如果你愿意,启动时的汇编代码都可以自己写,配置好时钟,配置好各样的寄存器,所有的代码都是你自己写的,出了问题自己找,自己的代码还找不出原因,那就废了。如果你觉得C语言也是黑盒子,为了躲避C语言开发者给你留的坑,你甚至可以用汇编写代码,当然这个我不推荐了,C语言很棒,bug很少。裸奔开发,你眼前唯一的黑盒子就是硬件是如何实现的,也只有硬件能坑你一把。
不言而喻,裸奔的单片机代码,虽然简单,但是所能做的功能也会有局限。
裸奔的话,联网什么的别想了。
所以如果需求比较简单,一定裸奔,需求困难,就跑操作系统。
什么单片机支持操作系统?
理论上,只要ROM/RAM资源足够,所有的单片机都可以执行嵌入式操作系统,但是,不是所有人都有移植操作系统的能力。
新手还是得靠厂家帮你移植操作系统,所以选单片机的时候,得问一下,上网查一下,它支持哪些操作系统?
以TI的 CC2640为例,这玩意支持TI自家的嵌入式操作系统 TI-RTOS,好用!
裸奔的话,所有单片机都能裸奔,毕竟不穿衣服谁不会啊~
温度特性
注意要看设计产品的工作温度区间,是民用级,还是军工级,有些单片机芯片高低温实验过不了的,会出现代码起飞,内部FLASH莫名丢几个等这些问题,不要等代码写好,送去拿证了,过不了高低温,被老板骂~
低功耗特性
芯片是否有较好的休眠模式,老牌的芯片厂家都非常注重硬件低功耗模式,提出了各种各样的睡眠方式,TI就是把低功耗做的很好的厂家。如果是设计电池供电的产品,一定要考虑低功耗。低功耗更多需要代码去优化,这看一个软件工程师的水平~
一个纽扣电池,产品用一年,那就太牛了!
开发环境
喜欢IAR还是MDK?笔者喜欢IAR多一点,感觉界面很硬朗,MDK的话显得像是在写上位机软件~CORTEX Mx系列的单片机多半都是用MDK开发的,STM32算是明星级产品了。TI的产品大多是用IAR。所以哪个开发环境你更熟悉,也可以作为考虑范畴。
芯片是否冷门?
STM32的技术支持是真的多,资料满天飞,所以如果对自己读DATASHEET的能力有所怀疑的话,一定要选类似STM32这样的popular芯片。
选冷门芯片是对自己的很大挑战,你会发现百度问题几乎没人答,你得写英文e-mail给原厂工程师,满心欢喜克服语言困难写完,他也不会理你。你得翻墙去国外论坛找资料。但是一旦你开发好,你会成就感爆棚,也会觉得,单片机不过如此~然后写一些关于这个芯片的CSDN文章,帮助建设社区!
学生的话可以推荐尝试尝试,工作的就算了,都996了别升级007咯~
最近的状态
大学的时候,对单片机,对飞行器的热情,我都在年复一年,日复一日的工作中慢慢淡去了。现在我唯一想的就是努力把产品做好,卖到世界的各个角落,这也算change world的一种方式吧~嘿嘿,自己给自己熬点鸡汤,愿明天会好~
分享的这些,若是有用的话,点个赞呗~
3. stm32f4信号发生器
是属于ARM系列中的Cortex-M系列的产品。ARM系列根据内核的不同可分为:
一、Cortex-A系列面向应用的应用处理器如高通的公版CPU、华为的麒麟、联发科的CPU等等当前手机上大量使用的都使用了Cortex-A系的内核;
二、Cortex-R系列,面向实时领域,这个比较少见,多用于工业上对实时要求较高的场合;
三、Cortex-M系列内核主要面向低成本高性能的嵌入式领域如Stm32 K40等等。
4. 基于stm32信号发生器
如果是电力电子领域dsp一般指的是德州的Tms320F28335或者新出的28379系列,前者包含浮点运算单元,定时器,pwm发生器adc,串口,i2c等,后者在此基础上改进成了双核,增加一些dsp指令比如快速算sin的,并增加了两个cla(其实像是小号的核心,也能执行程序,专门为周期执行的控制流程设计)还有一些外设。
典型单片机最容易想到的是st的stm32f334系列,这系列是单核arm m4核心,带高精度定时器,外设方面种类跟28335差不多。
28335抗干扰性据说比stm32系列好一些。另外28335能跑150mhz,28379更高,stm32f334只有72mhz(如果没记错的话)。
如果准备做研究,建议考虑28335或者28379,因为不差钱,德州官方历程多(有关电力电子的),其他做研究的也用的多,方便交流。做高端产品也可以考虑,想压缩成本他家也有精简版的28335或者28379。stm32f334其实也不弱,只是它官方历程没ti那么丰富,讲道理28335能做的stm32f334甚至stm32f0系列都能做。
如果只是想学单片机,那么通过stm32系列更合适,因为stm32的各种例子和资料更多。
5. stm32 信号处理
这个可以实现,有几种方案,其中,把采集到的数组分段发生到接受端,接收端根据数组通过通过dac直接还原输出!这个是最不失真的方式,不过也有极限性
6. stm32输出信号
1 设计数字接口6连接到继电器模块的信号脚
2 创建函数,设置xh脚为输出状态
3 loop函数其实是一个循环.
4 输出HIGH电平,继电器模块闭合,常开端与公共端接通,常闭端与公共端断开
5 输出LOW电平,继电器模块断开,常开端与公共端断开,常闭端与公共端接通
7. stm32f103信号发生器
蓝牙模块的连接是利用发射蓝牙信号和其他设备配对后就能连接
8. STM32信号发生器设计
F1采用Crotex M3内核,F4采用Crotex M4内核。
F1最高主频 72MHz, F4最高主频168MHz。
F4具有单精度浮点运算单元,F1没有浮点运算单元。
F4的具备增强的DSP指令集。F4的执行16位DSP指令的时间只有F1的30%~70%。F4执行32位DSP指令的时间只有F1的25% ~ 60%。
F1内部SRAM最大64K字节, F4内部SRAM有192K字节(112K+64K+16K)。
F4有备份域SRAM(通过Vbat供电保持数据),F1没有备份域SRAM。
F4从内部SRAM和外部FSMC存储器执行程序的速度比F1快很多。F1的指令总线I-Bus只接到Flash上,从SRAM和FSMC取指令只能通过S-Bus,速度较慢。F4的I-Bus不但连接到Flash上,而且还连接到SRAM和FSMC上,从而加快从SRAM或FSMC取指令的速度。
F1最大封装为144脚,可提供112个GPIO;F4最大封装有176脚,可提供140个GPIO。
F1的GPIO的内部上下拉电阻配置仅仅针对输入模式有用,输出时无效。而F4的GPIO在设置为输出模式时,上下拉电阻的配置依然有效。即F4可以配置为开漏输出,内部上拉电阻使能,而F1不行。
F4的GPIO最高翻转速度为84MHz,F1最大翻转速度只有18MHz。
F1最多可提供5个UART串口,F4最多可以提供6个UART串口。
F1可提供2个I2C接口,F4可以提供3个I2C接口。
F1和F4都具有3个12位的独立ADC,F1可提供21个输入通道,F4可以提供24个输入通道。F1的ADC最大采样频率为1Msps,2路交替采样可到2Msps(F1不支持3路交替采样)。F4的ADC最大采样频率为2.4Msps,3路交替采样可到7.2Msps。
F1只有12个DMA通道,F4有16个DMA通道。F4的每个DMA通道有4*32位FIFO,F1没有FIFO。
F1的SPI时钟最高速度为 18MHz, F4可以到37.5MHz。
F1没有独立的32位定时器(32位需要级联实现),F4的TIM2和TIM5具有32位上下计数功能。
F1和F4都有2个I2S接口,但是F1的I2S只支持半双工(同一时刻要么放音,要么录音),而F4的I2S支持全双工,放音和录音可以同时进行。
作为Cortex M3市场的最大占有者,ST公司在2011年又推出基于Cortex M4内核的STM32F4系列产品,相对与STM32F1/F2等Cortex M3产品,STM32F4最大的优势,就是新增了硬件FPU单元以及DSP指令,同时,STM32F4的主频也提高了很多,达到168Mhz(可获得210DMIPS的处理能力),这使得STM32F4尤其适用于需要浮点运算或DSP处理的应用,也被称之为:DSC,具有非常广泛的应用前景。
STM32F4相对于STM32F1,主要优势如下:
1, 更先进的内核。STM32F4采用Cortex M4内核,带FPU和DSP指令集,而STM32F1采用的是Cortex M3内核,不带FPU和DSP指令集。
2, 更多的资源。STM32F4拥有多达192KB的片内SRAM,带摄像头接口(DCMI)、加密处理器(CRYP)、USB高速OTG、真随机数发生器、OTP存储器等。
3, 增强的外设功能。对于相同的外设部分,STM32F4具有更快的模数转换速度、更低的ADC/DAC工作电压、32位定时器、带日历功能的实时时钟(RTC)、IO复用功能大大增强、4K字节的电池备份SRAM以及更快的USART和SPI通信速度。
4, 更高的性能。STM32F4最高运行频率可达168Mhz,而STM32F1只能到72Mhz;STM32F4拥有ART自适应实时加速器,可以达到相当于FLASH零等待周期的性能,STM32F1则需要等待周期;STM32F4的FSMC采用32位多重AHB总线矩阵,相比STM32F1总线访问速度明显提高。
5, 更低的功耗。STM32F40x的功耗为:238uA/Mhz,其中低功耗版本的STM32F401更是低到:140uA/Mhz,而STM32F1则高达421uA/Mhz。