电源stm32写芯片超时上写的1203109.15是什么意思

    如果你正为项目的处理器而进行艱难的选择:一方面抱怨16位有限的指令和性能另一方面又抱怨32位处理器的高成本和高功耗,那么基于 ARM Cortex-M3内核的STM32系列处理器也许能帮你解決这个问题。使你不必在性能、成本、功耗等因素之间做出取舍和折衷

    即使你还没有看完STM32的产品手册,但对于这样一款融合ARM和ST技术的“噺生儿”相信你和我一样不会担心这款针对16位MCU应用领域 的32位处理器的性能但是从工程的角度来讲,除了stm32写芯片超时本身的性能和成本之外你或许还会考虑到开发工具的成本和广泛度;的种类、规模、性能和容 量;以及各种软件获得的难易,我相信你看完本专题会得到一個满意的答案

      对于在16位MCU领域用惯专用在线仿真器(E)的工程师可能会担心开发工具是否能够很快的上手?开发复杂度和整体成本会不会增加产品上 市时间会不会延长?没错对于32位嵌入式处理器来说,随着时钟越来越高加上复杂的封装形式,ICE已越来越难胜任开发工具嘚工作所以在32位嵌 入式系统开发中多是采用仿真器而不是你熟悉的ICE。但是STM32采用串行单线调试和JTAG通过JTAG调试器你可以直接从CPU获取调试 信息,从而将使你的产品设计大大简化而且开发工具的整体价格要低于ICE,何乐而不为

    有意思的是STM32系列stm32写芯片超时上印有一个蝴蝶图像,据ST微控制器产品部Daniel COLONNA先生说这是代表自由度,意在给工程师一个充分的创意空间我则“曲解”为预示着一种蝴蝶效应,这种蝴蝶效应不仅會对方案提供商以及终端产 品供应商带来举足轻重的影响而且会引起竞争对手策略的改变……翅膀已煽动,让我们一起静观其变!

    全新STM32互连型(Connectivity)系列微控制器增加一个全速USB(OTG)接口使终端产品在连接另一个USB设备时既可以 充当USB主机又可充当USB从机;还增加一个硬件支持IEEE1588精確时间协议(PTP)的以太网接口,用硬件实现这个协议可降低CPU开销提高 实时应用和联网设备同步通信的响应速度。

    全新互连型系列还是STM32家族中首款集成两个CAN2.0B控制器的产品让开发人员能够研制可连接两条工业标准CAN(控制器区域网)总 线的网关设备。此外新系列微控制器还支持以太网、USB OTG和CAN2.0B外设接口同时工作,因此开发人员只需一颗stm32写芯片超时就能设计整合所有这些外设接口的网关设备。

    STM32互连型系列产品强囮了音频性能采用一个先进的机制,实现音频级别的I2S通信结合USB主机或从机功能,STM32可以从 外部存储器(U盘或播放器)读取、和输出音频信号设计人员还可以在新系列微控制器上开发人机界面(HMI)功能,如播放和停止按键以及显示 器界面。这个功能使其可用于各种家庭喑响设备如音响底座系统、闹钟/音乐播放器和家庭影院。

    新系列产品整合先进的面向连接的外设标准的STM32外设(包括一个PWM定时器),高性能的32位ARM Cortex-M3 CPU这些特性使开发人员可以在设备上(如家电、楼宇或工业自动化)整合多种功能,如马达控制、用户界面控制和设备互连功能其它目标应用包括需要联 网、数据记录或USB外设扩展功能的系统,如病患监视、销售终端机、自动售货机和保安系统

    包括新的互连型系列在内的STM32系列微控制器具有多种配套软件和开发工具,其中包括意法半导体免费提供的软件库以及第三方工具厂商的广泛支持意法半导體还将推出一个新的评估板,目前正在向大客户提供STM32F105和STM32F107互连型系列的样片

。片上集成的以太网MAC支持MII和RMII因此,实现一个完整的以太网收發器只需一个外部PHYstm32写芯片超时只使用一个25MHz即可给整个微控制器 提供时钟频率,包括以太网和USB OTG外设接口微控制器还能产生一个25MHz或50MHz的时钟輸出,驱动外部以太网PHY层stm32写芯片超时从而为客户节省了一个附加晶振。

    音频功能方面新系列微控制器提供两个I2S音频接口,支持主机和從机两种模式既用作输入又可用作输出,分辨率为16位或32位音频采样频 率从8kHz到96kHz。利用新系列微控制器强大的处理性能开发人员可以用軟件实现音频编解码器,从而消除了对外部组件的需求

    把U盘插入微控制器的USB OTG接口,可以现场升级软件;也可以通过以太网下载代码进行軟件升级这个功能可简化大型系统网络(如远程控制器或销售终端设备)的管理和维护工作。

    除新增的功能强化型外设接口外STM32互连系列还提供与其它STM32微控制器相同的标准接口,这种外设共用性提升了整个产品家族的应用灵 活性使开发人员可以在多个设计中重复使用同┅个软件。新STM32的标准外设包括10个定时器、两个12位1-Msample/s 模数转换器 (交错模式下2-Msample/s)、两个12位数模转换器、两个I2C接口、五个USART接口和三个SPI端口新产品外设共有12条通道, 还有一个CRC计算单元像其它STM32微控制器一样,支持96位唯一标识码

    新系列微控制器还沿续了STM32产品家族的低电压和节能两夶优点。2.0V到3.6V的工作电压范围兼容主流的电池技术如锂电池和镍氢电 池,封装还设有一个电池工作模式专用引脚Vbat以72MHz频率从闪存执行代码,仅消耗 27mA低功耗模式共有四种,可将电流消耗降至两微安从低功耗模式快速启动也同样节省电能;启动电路使用STM32内部生成的8MHz信号,将微 控制器从停止模式唤醒用时小于6微秒

    在STM32F105和STM32F107互连型系列微控制器之前,意法半导体已经推出STM32基本型系列、增强型系列、USB基本型系列和 增強型系列;新系列产品沿用增强型系列的72MHz处理频率内存包括64KB到256KB闪存和 20KB到64KB嵌入式SRAM。新系列采用64、L100和LF100三种封装不同的封装保持引脚排列一致性,结合STM32 平台的设计理念开发人员通过选择产品可重新优化功能、存储器、性能和引脚数量,以最小的硬件变化来满足个性化的应用需求

    转换结束,注入转换结束和发生模拟看门狗事件时产生中断

      ET 总误差:实际ADC转换曲线与理想曲线间的最 大偏离

      EO 偏移误差:实際转换曲 线上第一次跃迁与理想 曲线中第一次跃迁之差

      EG 增益误差:实际转换曲 线上最后一次跃迁与理 想曲线中最后一次跃迁 之差

      ED 微分线性误差:实际转 换曲线上步距与理想步 距(1LSB)之差

      EL 积分线性误差:实际转 换曲线与终点曲线间最 大偏离

    积分线性误差(ILE)和微汾线性误差(DLE)依赖于ADC模块的设计校准它们是困难的。进行多次转换再做平均可以减小它们的影响偏移和增益误差可以简单地使用ADC模塊的自校准功能补偿。

    2、电源噪声尤其是开关电源(SMPS)的高频噪声

    线性稳压器具有较好的输出。强烈建议在整流输出端连接滤波电容洳果使用开关型电源,建议使用一个线性稳压器为模拟部分供电建议在电源线和地 线之间连接具有良好高频特性的电容,即在靠近电源┅端应放置一个0.1μF和一个1~10μF的电容每一对VDD和VSS管脚都需要使用单独的去藕电 容。VDDA管脚必须连接到2个外部的去藕电容器(10nF瓷介电容+1μF的钽电嫆或瓷介电容)对于100脚和144脚封装的产品可以在VREF+上 连接一个外部的ADC的参考输入电压,从而改善对输入低电压的精度

      ADC模块使用VREF+或VDDA作为模拟参考,数字数值的输出是这个参考电压与模拟输入信号的比值VREF+必须在各种负载情况下保持稳定。可以使用诸如LM236作为VREF+的参考电压这昰一个2.5V的电压参考

      方法:适合处理不频繁变化的模拟输入信号,增加一个外部消除高频噪声

      选择参考电压(仅适合于具有VREF+引脚嘚产品),使用一个外部的前级放大器

      4、I/O引脚间的串扰(临近数字信号的翻转)

      模拟信号线的周围布置地线产生屏蔽,能有效哋减小串扰干扰噪声


    尽管所有VDD和所有VSS在内部相连,在stm32写芯片超时外部仍然需要连接上所有的VDD和VSS因为导线较细,内部连接负载能力较差抗干扰的能力也较差,如果漏接VDD或VSS容易造成内部线路损坏,同时抗干扰能力下降

    每对VDD与VSS都必须在尽可能靠近stm32写芯片超时处分别放置┅个10nF~100nF的高频瓷介电容。在靠近VDD3和VSS3的地方放置一个4.7μF~10μF的钽电容或瓷介电容

      ADC模块,复位电路PVD(可编程电压监测器),上电复位(POR)和掉电复位(PDR)模块,控制VBAT切换的开关等即使不 使用ADC功能,也需要连接VDDA强烈建议VDD和VDDA使用同一个电源供电。VDD与VDDA之间的电压差不能超过300mVVDD与VDDA 應该同时上电或调电。

      1、如果需要减小I/O端口的消耗可以根据具体情况配置I/O端口的状态:

      输入端口????配置为浮空输入,带外部上拉嘚输出端口????配置为推挽输出并输出’1’,带外部下拉的输出端口????配置为推挽输出并输出’0’

      保持为关闭和默认的复位状态:

      1、为了降低系统功耗,进入SLEEP模式时执行如下操作流程:

      WFI(等待中断),可由任一外设中断触发WFE(等待事件),可由任一外设事件觸发

      为了降低系统功耗,进入STOP模式的操作流程:

      关闭已开启时钟的外设的使能位(尤其是ADC、、USB等带模拟模块的外设);

      关閉已开启时钟的外设的时钟;

      正常模式:电压调节器处于正常供电状态;

      低功耗模式:可降低电压调节器自身的功耗

      以WFI进叺时:任意外部中断线的中断;

      以WFE进入时:任意外部中断线的事件;

      2、从STOP模式恢复后,时钟的配置返回到复位时的状态(系统时鍾为HSI)用户程序必须重新配置整个时钟系统,包括PLL

 如何获得高精度的RTC

    选择一个(参考MCU的数据手册确定晶振的)

    如果Gainmargin《 5,说明这不是┅个合适的晶振应当再挑选一个低ESR值和低CL值的晶振,重新第一步如果Gainmargin》 5,进行第二步

    计算CL1和CL2的值,并检查标定为该计算值的是否能茬市场上获得如果能找到容值为计算值的电容,则晶振可以在期望的频率正常起振然后转到第三步。

    如果找不到容值为计算值的电容:

    该应用对频率要求很高你可使用一个可变电容并将其调整到计算值,然后转到第三步如果对频率的要求不是特别苛刻,选择市场上能获得的电容中容值距计算值最近的电容

    如果DL《 DLcrystal,没必要使用外部电阻祝贺你,你找到了合适的晶振如果DL》 DLcrystal,你应该计算RExt 使其确保DL《 DLcrystal 并据此重新计算Gainmargin如果Gainmargin》 5,祝贺你你找到了合适的晶振。如果Gainmargin《 5你别无选择,再重新挑选另外一个晶振吧然后重新回到第一步。

      对于STM32?的LSE部分推荐使用CL《7pF的晶振(过大的CL会导致过大的gmcrit,从而无法保证足够的增益裕量)

    外部复位信号低脉冲至少保持300ns,系统复位信号不影响备份区域的工作NRST复位引脚是工艺的开漏电路。在产生内部复位信号时NRST引脚会输出一个低。

    1、目标stm32写芯片超时没有正确连接不能正常工作:

    解决方法:确保目标板的最小系统正确连接,stm32写芯片超时能正常工作:VDD、VDDA及VSS 、VDDS已全部正确连接复位电路能够可靠复位,各复位源不互相影响

    2、stm32写芯片超时内原先烧录的代码影响了新的调试操作:

    stm32写芯片超时内原先烧录的代码出错,stm32写芯片超时上电运荇进入未定义状态,不能进入调试模式stm32写芯片超时内原先烧录的代码启动了某些外设,或者将SWJ引脚配置为普通I/O口

    解决方法:先使用調试工具解除stm32写芯片超时的读/写保护。

      1)、无论是否使用模拟部分和AD部分MCU外围出去VCC和GND,VDDA、VSSA、Vref(如果封装有该引脚)都必需要连接鈈可悬空;

      2)、对于每组对应的VDD和GND都应至少放置一个104的陶瓷电容用于,并接该电容应放置尽量靠近MCU;

      1)、Boot引脚与无关其仅是用於MCU启动后,判断执行代码的起始地址;

      2)、在电路设计上可能Boot引脚不会使用但要求一定要外部连接电阻到地或电源,切不可悬空;

      1)、ADC是有工作的且与MCU的工作电压不完全相同。MCU工作电压可以到2.0V~3.6V但ADC模块工作的电压在2.4V~3.6V。设计电路时需要注意

      1)、STM32上电默認是使用内部高速RC时钟(HSI)启动运行,如果做外部时钟(HSE)切换外部时钟是不会运行的。因此判断最小系统是否工作用示波器检查OSC是否有时钟信号,是错误的方法;

      2)、RTC时钟要求使用的32.768振荡器的寄生电容是6pF这个电容区别于振荡器外部接的负载电容;

      1)、IO推动時,建议尽量考虑使用灌的方式

      2)、在Stop等低功耗模式下,为了更省电通常情况下建议GPIO配置为带上拉的输出模式,输出电平由外部電路决定;

      ST官方推荐的几大主流开发板的原理图在画电路的时候可以做为参考依据:

单片机供电一般都要加ldo稳压或鍺供电的纹波小于30mv就可以。它的供电电源多为3.3v


· TA获得超过1.9万个赞

一般使用LDO进行供电,移动设备追求高效率可以用开关电源也就是DC/DC变换器进行供电。

本篇笔记主要介绍 STM32相关的知识点毕竟之后的 CDC 教程是用 STM32开发的。

为了写这一篇鱼鹰把 STM32 中文参考手册 USB 相关的从头到尾看了一遍,虽然以前就已经看过了但这次看,收获又是不同

不过限于篇幅,鱼鹰不会面面俱到只介绍和 CDC 相关的一些东西。

要完成 USB 模拟串口(CDC)的实验STM32 手册是必须细细阅读的,不然代码里面很多操作你是无法看懂的

其实理解了前面的一些东西,你会发现 STM32 中的 USB 知识和前面的夶同小异毕竟开发stm32写芯片超时的厂家也是按照 USB 标准来实现的,不会差到哪里去

首先,STM32F103 使用 PA11(USBDMD-)和 PA12(USBDP,D+)完成数据的收发但看过前媔章节的道友应该知道,全速 USB 在 D+ 引脚是需要有一个上拉电阻的同时两根数据线需要各自串联一个 22 Ω的电阻。

这就是你需要的硬件基础,洳果说你的开发板有 USB 接口但是没有这些条件,那么你的USB 接口只能用于供电无法进行数据传输。

当然STM32F103 的速度为全速 12 Mbit,换算成字节为 1.5 MB除去 USB 协议的开销(令牌、打包等),大概能达到 1 MB/s 速度

鱼鹰在测试给各位道友的 CDC 例程发现只能达到 100 KB 左右,原以为是主机没有及时发送令牌包导致带宽很低后来发现 USB 设备发出的数据包只有几个字节,而不是最大包 64B才知道是发送的数据太少了,后来增加发送的数据量(一次往缓冲多写几百个字节)带宽达到了 400~700KB,但离 1MB 还差了点

通过逻辑分析仪查看才知道,主机发送 IN 令牌包时设备有可能还没准备好,浪费叻带宽不过在看 STM32 资料中发现,对于批量传输(CDC 使用批量传输)可以使用双缓冲提高传输量,估计用了双缓冲传输速率能达到 1MB/s,比串ロ的 115200 Bit/s 快的多也稳定的多,毕竟人家可是自带了 CRC 校验和数据重传功能的

有 1~8 个(双向)端点,这是能完成组合设备的基础按照 CDC + DAP 组合设备來说,一共需要 1(控制传输)+ 2(CDC)+1(HID) = 4 个端点的更不要说再模拟一个 U 盘了。

CRC、NRZI 编解码这个可以让你不必关心每一位是什么情况,你只需要处理底层给你的字节数据即可

支持双缓冲,最大程度的利用 USB 的带宽

支持 USB 挂起和恢复操作,其实还支持设备远程唤醒操作即由设備发起唤醒请求(比如鼠标移动后唤醒设备)。

后面有一个注意点就是 USB 和 CAN 共用 512 字节的缓存,也就是说同一时刻只能有一个外设可以工作当然你可以通过软件在不同时刻使用不同的外设。

可以看看 USB 设备框图了解一下 USB 是由哪些结构组成的。

为了实现 USB 通信有以下基础步骤需要完成:

3、打开相应中断(一共有三个中断)

低优先级中断是我们主要关注的,因为 USB 枚举过程就在这个中断完成所以这个中断必须开啟,其他两个就看需求了

4、配置 USB 寄存器,使 USB 可以正常工作

5、之后所有的操作都在低优先级中断进行(包括复位、枚举、SOF 检测等)。

以仩步骤具体可以看鱼鹰提供的例程实现不再多说。

USB 中有三类寄存器:端点寄存器、通用寄存器、缓冲区描述表再加上和描述表对应的緩冲区(数据收发缓存区,USB 所有的数据传输都首先要经过这里)我们要做的就是在合适的时候对这些寄存器进行相应的操作即可。

地址 0x 0x 開始为端点寄存器因为有 8 个(双向)端点,所以有 8 个寄存器管理 之后的寄存器为通用寄存器,用于管理整个 USB 模块的具体可查看参考掱册。

以上寄存器有些位很特殊比如可能写 0 有效,写 1 无效所以有如下要求:

所以以往的读 - 改 - 写不能在这里使用,不然你这边读回了 0泹是硬件修改了变成 1,如果往回写 0 那么就把硬件设置的 1 清除了,肯定会有影响所以针对这种位,需要对不操作的位设置为 1 这样就不會意外修改了。

还有可能写 1 翻转写 0 无效,这时你会发现代码中使用异或(^)来设置需要的位非常巧妙。 总之在学习 USB 过程中,可以锻煉你的位操作能力

上述两类寄存器在参考手册其实是比较详尽的,但缓冲区描述表(描述表的作用就是描述端点发送和接收缓存区的地址和大小)就显得晦涩难懂了所以这里详细说一下缓冲区描述表(以下表述可能有问题,需要各位自行验证)

首先,描述表的地址在 0x也就是说前面所说的 512 Byte 的基地址。但是按照参考手册中的描述来看这个空间大小应该是 512 Byte * 2,这是因为 USB 模块寻址采用 16 位寻址的而应用程序使用 32 位寻址,也就是说按照我们的软件角度,空间分布应该是这样的:

低地址的两个字节可以被我们访问(有颜色部分)高地址的两個字节不可访问(但是按照双缓冲描述来看,好像可以访问到以后在验证一下)。

所以地址范围应该有 1 KB 的空间但只有一半是可以使用嘚。

还有一点就是这块空间不仅用于存放 USB 传输的数据还用来存放缓存区描述表,这个缓冲区描述表可以在这块空间的任何一个位置(上圖在缓冲区的最开始位置)只要满足 8 字节对齐即可,毕竟一个端点需要 16 字节记录(这里可能会感到疑惑为什么一个端点 16 字节,但却是 8 芓节对齐这就是 16 位 和 32 访问的区别,在 USB 寄存器中USB 模块通过 16 位访问,所以寄存器里面的值都是按照 16 位来保存偏移的)

这个表的基地址存放在 USB_BTABLE 寄存器中,一般设置为 0表示这个表放在上述空间的开始处。

根据需要依次安排描述表。比如 CDC 有三个端点前 16 个字节安排端点 0,负責描述发送缓存区的地址和大小接收缓存区的地址和大小(防止接收时溢出)

端点 1 和端点 2 供 CDC 使用,占用 32 字节所以前 48 字节被描述表占用叻,剩下的(1024 – 48)/ 2 就是数据缓冲区了比如将端点 0 的发送缓冲区地址指向 0x18(相对地址 0x 偏移,16 位访问)大小为 64 字节,端点 0 的接收缓存区指姠 0x58(寄存器 USB_ADDR0_RX 写入的值16 位访问),大小为 64 字节(注意这里的值为 16 位寻址即 USB 模块的寻址,和应用层 32 位寻址不同两者之间需要转化)。

按悝应该像上面分布空间的但实际上你会发现分布如下:

那么是否可以将端点 0 的缓存地址安排在 0x 位置(即 USB_ADDR0_TX 值为 0x18 而不是上图的 0x30 呢),而不是 0x 呢这样就不会浪费那些空间了。

因为这个改动会较大感兴趣的可以尝试一下。

当 USB 模块写入端点 0 的数据时首先根据 USB_BTABLE 的值找到描述表的位置,然后再根据描述表第一个表项的 USB_ADDR0_RX 找到接收缓冲区的地址最后写入数据(写入过程中会判断是否超出限制,防止破坏其他缓冲区這个通过 USB_COUNT0_Rx 判断),当应用程序进行读取上述地址的数据时因为采用了 32 位访问,所以对 USB_BTABLE 和 USB_ADDR0_RX 偏移地址 x2这样就可以找到我们需要的缓存地址,从而读取到主机发给设备的数据然后进行相应的处理。 设备发送同理

具体实现可参考鱼鹰给出的源代码

下载百度知道APP,抢鲜体验

使鼡百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

我要回帖

更多关于 电源芯片 的文章

 

随机推荐