手记传送门:
  手记(编程/设计)
  手记(科学/文学)
  手记(电子/硬件)
  手记(游戏/娱乐)

PS:可以页内查找关键词找到相应位置,或点开目录浏览。

隔离数字电路和模拟电路的做法

  • 数字地和模拟地单独铺铜,最后单点连接。为了将数字地和模拟地的共地电阻降到最小,串接电感一般很难取值,用0欧电阻是最佳选择。区别:

    • 磁珠对于频率不确定或无法预知的情况,磁珠不合适。
    • 电容隔直通交,造成浮地。
    • 电感体积大,杂散参数多,不稳定。
    • 0欧电阻相当于很窄的电流通路,能够有效地限制环路电流,使噪声得到抑制。电阻在所有频带上都有衰减作用(0欧电阻也有阻抗),这点比磁珠强。
  • 数字电源和模拟电源则是由电感10mh左右(或者0欧姆电阻,或者磁珠)分开。

HR202L HR31湿敏电阻

2024-12-17T05:40:20.png

湿敏电阻测试31K1004

RC测湿

注:Rs 为标准电阻 RH 为湿敏电阻 检测原理:

RC 测湿的实现方法是利用电阻 R 给电容 C 充放电时间来测量湿度的(此处的湿度感 测器为湿敏电阻) 。
用不同的电阻给电容充放电时间不一样,对 RC测量湿度的精度与电阻 R 和电容 C的
选取有关。我们通常是选用一个标准电阻(随湿度变化其阻值变化很小,可忽略不计,通 常为高精度的金属膜电阻)它的阻值 Rs
与湿度感测器在标准大气压下、25℃时的阻值相 同。当湿度发生变化时,湿敏电阻的阻值 RH发生变化,那么湿敏电阻 RH 给电容C的充放
电时间也发生变化。而标准电阻 Rs给电容 C 的充放电时间则基本不发生变化。 由RC充电原理我们知道,电阻 R 与电容 C
充电时间的关系可知 TH=KRHC (1) Ts=KRsC (2) 其中K 为常数
由1,2可知充电时间的比例与 R 有关,而 C 无关。 RH=(Rs*TH)/Ts 当然,随着环境湿度的变化电容 C
变化比较大,我们完成标准电阻和湿敏电阻对同一电 容的充放电在很短的时间内,因而电容C 变化引起的误差可以消除。为了提高精度,对电 容 C
的选取也有关系,电容容量不能太小,也不能太大,与感测器的标称值有关。

这样我们就计算出拉湿敏电阻阻值RH,通过湿阻特性查表就可以得到湿度值;当然也可以分段计算出湿度值。

硬件摘要:

PD0、PD2和PD3是AVR单片机的3个I/O脚;
RK为10k的精密电阻;
RH为31K-精度为1%的湿敏电阻;
R1为100Ω的普通电阻;
C1为0.47μ的瓷介电容。

程序要点:

先将 PD0、PD2,PD3都设为低电平高阻输出,使C1放电至放完。
将PD2、PD3设置为高阻输入状态,PD0设为高电平输出,通过RK电阻对C1充电,单片机内部计时器清零并开计时检测PD3口状态,当PD3口检测为高电平时,即C1上的电 压达 到单片机 高电平输入的门嵌电压时,单片机计时器记录下从开始充电到PD3口转变为高电平的时间T1即TS。
将PD0、PD2,PD3都设为低电平高阻输出,使C1放电至放完。
再将PD0、PD3设置为输入状态,PD2设为高电平输出,通过RH电阻对C1充电,单片机内部计时器清零并开始计时,检测PD3口状态,当PD3口检测为高电平时,单片机计时器记录下从开始充电到PD3口转变为高电平的时间T2即TH。

注意事项:

从上面所述可以看出,该测湿电路的误差来源于这几个方面:单片机的定时器精度,RK电阻的精度,湿敏电阻RH的精度,而与单片机的输出电压值、门嵌电压值、电容精度无关。 因此,适当选取湿敏电阻和精密电阻的精度,单片机的工作频率够高,就可以得到较好的测湿精度。
当单片机选用4M工作频率,RK、RH均为1%精度的电阻时,湿度误差可以做到小于1℃。
如果PD3具有外部上升沿中断的功能,程序可以更简单,效果更好。

恒流源漏电问题分析及解决方案

恒流源漏电问题分析及解决方案.pdf

USB TYPE-C 和 USB2.0 TYPE-A 插头线缆接线图

2024-12-23T10:24:19.png
2024-12-23T10:24:28.png

  • Pin A5 (CC) of the USB Type-C plug shall be connected to VBUS through a resistor Rp (56 kΩ ± 5%).
  • See Section 4.5.3.2.2 and Table 4-24 for the functional description and value of Rp.
  • Contacts B6 and B7 should not be present in the USB Type-C plug.
  • All VBUS pins shall be connected together within the USB Type-C plug. Bypass capacitors are not required for the VBUS pins in this cable.
  • All Ground return pins shall be connected together within the USB Type -C plug.
  • Shield and GND grounds shall be connected within the USB Type -C and USB 2.0 Standard-A plugs on both ends of the cable assembly.
  • All USB Type-C plug pins that are not listed in this table shall be open (not connected)

    USB信号定义:http://www.usbzh.com/article/detail-206.html
    USB接口大全:http://www.usbzh.com/article/detail-144.html
    TYPE-C信号定义:http://www.usbzh.com/article/detail-722.html

各平台下各类型所占空间

Type16 bit platform32 bit platform64 bit platform
char1 byte1 byte1 byte
short2 byte2 byte2 byte
int2 byte4 byte4 byte
unsigned int2 byte4 byte4 byte
float4 byte4 byte4 byte
double8 byte8 byte8 byte
long4 byte4 byte8 byte
long long8 byte8 byte8 byte
unsigned long4 byte4 byte8 byte
Pointer2 byte4 byte8 byte
Max storage space2^162^322^64

51优化

Devise:

Use Extended Linker (LX51) instead of BL51

C51:

Level -> 9
Emphasis -> Favor size
Linker Code Packing (max. AJMP / ACALL)

LX51 Misc:

Misc controls -> REMOVEUNUSED

VS Code HTML 调试环境

  • 插件 Live Preview + Live Server
    可实现VSCode中实时预览、跨域调用文件

VSCode 删除不包含某字符串的行,筛选包含字符串的行

^((?!bcd).)*$

1234
4567
abcd
7890
3bcd

Keil调试时保存watchwindow的参数变量到文件

背景

  • 定义了一个数组,程序执行后维数组赋值,数组元素的值可在watchwindow显示,但无法直接保存到文件。假定程序中定义的数组为 uint32_t testarray[100];

解决方法

  • 1.进入debug状态,完成数组赋值
  • 2.暂停debug
  • 3.在µVision function editor中创建函数:(µVision function editor的打开方法为:

    Debug->Function Editor (Open Init File)
    
    FUNC void displayvalues(void) {
    int idx;
    
    exec("log > MyValues.log");
    for (idx = 0; idx < 100; idx++) {
      printf ("testarray[%d] = %u\n", idx, testarray[idx]);
    }
    exec("log off");
    }
  • 4.在命令行µVision command line输入 displayvalues()
  • 5.如果一切正常,命令行窗口 command window会显示如下信息,同时本地文件夹中会生成一个明为MyValues.log的文件,保存的内容与显示的一致。

    testarray[0] = 0
    testarray[1] = 1
    testarray[2] = 2
    testarray[3] = 3
    testarray[4] = 4
    testarray[5] = 5
    testarray[6] = 6
    testarray[7] = 7
    testarray[8] = 8
    testarray[9] = 9
    :
    testarray[60] = 60
    testarray[61] = 61
    testarray[62] = 62
    testarray[63] = 63
————————————————
版权声明:本文为CSDN博主「SeniorZ」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wbdxz/article/details/104536153

Keil文件有一个黄色的钥匙标识

  • 在使用MDK5编写程序的时候,有一次突然出现了工程内所有的文件都不可以修改的情况,文件上有一个黄色的钥匙标识,所有文件全都不可以修改,包括增删文件等等。
  • 出现这种情况的原因是将该工程内的文件模式设为了只读。

Keil查看文件路径的方法

  • 在工程种选择任意一个文件,然后点击右键,选择"Option for File"。
  • 在文件框种右击任意一个文件,然后点击右键,选择“Open Containing Folder”,就可以打开这个文件所在的文件夹了。

Keil simulate 调试无法连续执行

Debug:
Dialog Dll: DARMSTM.DLL
Parameter: -pSTM32F103ZE

Keil Support Device


Details

Peripheral Simulation for STMicroelectronics STM32F1 Series

Dialog DLLParameterMicrocontroller Device
DARMSTM.DLL-pSTM32F101C6STM32F101C6
DARMSTM.DLL-pSTM32F101C8STM32F101C8
DARMSTM.DLL-pSTM32F101CBT6STM32F101CBT6
DARMSTM.DLL-pSTM32F101R6STM32F101R6
DARMSTM.DLL-pSTM32F101R8STM32F101R8
DARMSTM.DLL-pSTM32F101RBSTM32F101RB
DARMSTM.DLL-pSTM32F101T6STM32F101T6
DARMSTM.DLL-pSTM32F101T8STM32F101T8
DARMSTM.DLL-pSTM32F101V8STM32F101V8
DARMSTM.DLL-pSTM32F101VBSTM32F101VB
DARMSTM.DLL-pSTM32F103C6STM32F103C6
DARMSTM.DLL-pSTM32F103C8STM32F103C8
DARMSTM.DLL-pSTM32F103CBSTM32F103CB
DARMSTM.DLL-pSTM32F103R6STM32F103R6
DARMSTM.DLL-pSTM32F103R8STM32F103R8
DARMSTM.DLL-pSTM32F103RBSTM32F103RB
DARMSTM.DLL-pSTM32F103T6STM32F103T6
DARMSTM.DLL-pSTM32F103T8STM32F103T8
DARMSTM.DLL-pSTM32F103V8STM32F103V8
DARMSTM.DLL-pSTM32F103VBSTM32F103VB
DARMSTM.DLL-pSTM32F103ZESTM32F103ZE

Peripheral Simulation for NXP LPC1100 Series

Dialog DLLParameterMicrocontroller Device
DARMP1.DLL-pLPC1111LPC1111/002
DARMP1.DLL-pLPC1111LPC1111/101
DARMP1.DLL-pLPC1111LPC1111/102
DARMP1.DLL-pLPC1111LPC1111/103
DARMP1.DLL-pLPC1111LPC1111/201
DARMP1.DLL-pLPC1111LPC1111/202
DARMP1.DLL-pLPC1112LPC1112/101
DARMP1.DLL-pLPC1112LPC1112/102
DARMP1.DLL-pLPC1112LPC1112/201
DARMP1.DLL-pLPC1112LPC1112/202
DARMP1.DLL-pLPC1112LPC11C12/301
DARMP1.DLL-pLPC1113LPC1113/201
DARMP1.DLL-pLPC1113LPC1113/202
DARMP1.DLL-pLPC1113LPC1113/301
DARMP1.DLL-pLPC1113LPC1113/302
DARMP1.DLL-pLPC1114LPC1114/102
DARMP1.DLL-pLPC1114LPC1114/201
DARMP1.DLL-pLPC1114LPC1114/202
DARMP1.DLL-pLPC1114LPC1114/301
DARMP1.DLL-pLPC1114LPC1114/302
DARMP1.DLL-pLPC1114LPC11C14/301

Peripheral Simulation for NXP LPC1300 Series

Dialog DLLParameterMicrocontroller Device
DARMP1.DLL-pLPC1311LPC1311
DARMP1.DLL-pLPC1313LPC1313
DARMP1.DLL-pLPC1342LPC1342
DARMP1.DLL-pLPC1343LPC1343

Peripheral Simulation for NXP LPC1700 Series

Dialog DLLParameterMicrocontroller Device
DARMP1.DLL-pLPC1751LPC1751
DARMP1.DLL-pLPC1752LPC1752
DARMP1.DLL-pLPC1754LPC1754
DARMP1.DLL-pLPC1756LPC1756
DARMP1.DLL-pLPC1758LPC1758
DARMP1.DLL-pLPC1759LPC1759
DARMP1.DLL-pLPC1759LPC1759
DARMP1.DLL-pLPC1764LPC1764
DARMP1.DLL-pLPC1765LPC1765
DARMP1.DLL-pLPC1766LPC1766
DARMP1.DLL-pLPC1767LPC1767
DARMP1.DLL-pLPC1768LPC1768
DARMP1.DLL-pLPC1769LPC1769
DARMP1.DLL-pLPC1772LPC1772
DARMP1.DLL-pLPC1774LPC1774
DARMP1.DLL-pLPC1776LPC1776
DARMP1.DLL-pLPC1777LPC1777
DARMP1.DLL-pLPC1778LPC1778
DARMP1.DLL-pLPC1785LPC1785
DARMP1.DLL-pLPC1786LPC1786
DARMP1.DLL-pLPC1787LPC1787
DARMP1.DLL-pLPC1788LPC1788

Peripheral Simulation for Atmel SAM3 Series

no simulation for Atmel devices, according to web description.

Dialog DLLParameterMicrocontroller Device
DARMSAM3.DLL-pSAM3U1CSAM3U1C
DARMSAM3.DLL-pSAM3U1ESAM3U1E
DARMSAM3.DLL-pSAM3U2CSAM3U2C
DARMSAM3.DLL-pSAM3U2ESAM3U2E
DARMSAM3.DLL-pSAM3U4CSAM3U4C
DARMSAM3.DLL-pSAM3U4ESAM3U4E

Peripheral Simulation for Toshiba TX03 Series

Dialog DLLParameterMicrocontroller Device
DARMT3.DLL-pTMPM330FDFGTMPM330FDFG
DARMT3.DLL
-pTMPM330FWFGTMPM330FWFG
DARMT3.DLL-pTMPM330FYFGTMPM330FYFG

Peripheral Simulation for Texas Instruments LM3S Series

Dialog DLLParameterMicrocontroller Device
DLM.DLL-pLM3S101LM3S101
DLM.DLL-pLM3S102LM3S102
DLM.DLL-pLM3S1110LM3S1110
DLM.DLL-pLM3S1133LM3S1133
DLM.DLL-pLM3S1138LM3S1138
DLM.DLL-pLM3S1150LM3S1150
DLM.DLL-pLM3S1162LM3S1162
DLM.DLL-pLM3S1165LM3S1165
DLM.DLL-pLM3S1332LM3S1332
DLM.DLL-pLM3S1435LM3S1435
DLM.DLL-pLM3S1439LM3S1439
DLM.DLL-pLM3S1512LM3S1512
DLM.DLL-pLM3S1538LM3S1538
DLM.DLL-pLM3S1601LM3S1601
DLM.DLL-pLM3S1607LM3S1607
DLM.DLL-pLM3S1608LM3S1608
DLM.DLL-pLM3S1620LM3S1620
DLM.DLL-pLM3S1625LM3S1625
DLM.DLL-pLM3S1626LM3S1626
DLM.DLL-pLM3S1627LM3S1627
DLM.DLL-pLM3S1635LM3S1635
DLM.DLL-pLM3S1637LM3S1637
DLM.DLL-pLM3S1751LM3S1751
DLM.DLL-pLM3S1776LM3S1776
DLM.DLL-pLM3S1850LM3S1850
DLM.DLL-pLM3S1911LM3S1911
DLM.DLL-pLM3S1918LM3S1918
DLM.DLL-pLM3S1937LM3S1937
DLM.DLL-pLM3S1958LM3S1958
DLM.DLL-pLM3S1960LM3S1960
DLM.DLL-pLM3S1968LM3S1968
DLM.DLL-pLM3S1968LM3S1968
DLM.DLL-pLM3S2110LM3S2110
DLM.DLL-pLM3S2110LM3S2110
DLM.DLL-pLM3S2139LM3S2139
DLM.DLL-pLM3S2276LM3S2276
DLM.DLL-pLM3S2410LM3S2410
DLM.DLL-pLM3S2432LM3S2432
DLM.DLL-pLM3S2533LM3S2533
DLM.DLL-pLM3S2601LM3S2601
DLM.DLL-pLM3S2601LM3S2601
DLM.DLL-pLM3S2608LM3S2608
DLM.DLL-pLM3S2616LM3S2616
DLM.DLL-pLM3S2620LM3S2620
DLM.DLL-pLM3S2637LM3S2637
DLM.DLL-pLM3S2651LM3S2651
DLM.DLL-pLM3S2671LM3S2671
DLM.DLL-pLM3S2678LM3S2678
DLM.DLL-pLM3S2776LM3S2776
DLM.DLL-pLM3S2911LM3S2911
DLM.DLL-pLM3S2918LM3S2918
DLM.DLL-pLM3S2939LM3S2939
DLM.DLL-pLM3S2948LM3S2948
DLM.DLL-pLM3S2950LM3S2950
DLM.DLL-pLM3S2965LM3S2965
DLM.DLL-pLM3S2965LM3S2965
DLM.DLL-pLM3S300LM3S300
DLM.DLL-pLM3S301LM3S301
DLM.DLL-pLM3S308LM3S308
DLM.DLL-pLM3S310LM3S310
DLM.DLL-pLM3S315LM3S315
DLM.DLL-pLM3S316LM3S316
DLM.DLL-pLM3S317LM3S317
DLM.DLL-pLM3S328LM3S328
DLM.DLL-pLM3S3651LM3S3651
DLM.DLL-pLM3S3739LM3S3739
DLM.DLL-pLM3S3748LM3S3748
DLM.DLL-pLM3S3748LM3S3748
DLM.DLL-pLM3S3749LM3S3749
DLM.DLL-pLM3S3759LM3S3759
DLM.DLL-pLM3S3768LM3S3768
DLM.DLL-pLM3S5632LM3S5632
DLM.DLL-pLM3S5652LM3S5652
DLM.DLL-pLM3S5662LM3S5662
DLM.DLL-pLM3S5732LM3S5732
DLM.DLL-pLM3S5737LM3S5737
DLM.DLL-pLM3S5739LM3S5739
DLM.DLL-pLM3S5747LM3S5747
DLM.DLL-pLM3S5749LM3S5749
DLM.DLL-pLM3S5752LM3S5752
DLM.DLL-pLM3S5757LM3S5757
DLM.DLL-pLM3S5762LM3S5762
DLM.DLL-pLM3S5767LM3S5767
DLM.DLL-pLM3S5768LM3S5768
DLM.DLL-pLM3S5769LM3S5769
DLM.DLL-pLM3S5791LM3S5791
DLM.DLL-pLM3S601LM3S601
DLM.DLL-pLM3S608LM3S608
DLM.DLL-pLM3S610LM3S610
DLM.DLL-pLM3S6100LM3S6100
DLM.DLL-pLM3S611LM3S611
DLM.DLL-pLM3S6110LM3S6110
DLM.DLL-pLM3S612LM3S612
DLM.DLL-pLM3S613LM3S613
DLM.DLL-pLM3S615LM3S615
DLM.DLL-pLM3S617LM3S617
DLM.DLL-pLM3S618LM3S618
DLM.DLL-pLM3S628LM3S628
DLM.DLL-pLM3S6420LM3S6420
DLM.DLL-pLM3S6422LM3S6422
DLM.DLL-pLM3S6432LM3S6432
DLM.DLL-pLM3S6537LM3S6537
DLM.DLL-pLM3S6610LM3S6610
DLM.DLL-pLM3S6611LM3S6611
DLM.DLL-pLM3S6618LM3S6618
DLM.DLL-pLM3S6633LM3S6633
DLM.DLL-pLM3S6637LM3S6637
DLM.DLL-pLM3S6730LM3S6730
DLM.DLL-pLM3S6753LM3S6753
DLM.DLL-pLM3S6911LM3S6911
DLM.DLL-pLM3S6918LM3S6918
DLM.DLL-pLM3S6938LM3S6938
DLM.DLL-pLM3S6950LM3S6950
DLM.DLL-pLM3S6952LM3S6952
DLM.DLL-pLM3S6965LM3S6965
DLM.DLL-pLM3S800LM3S800
DLM.DLL-pLM3S801LM3S801
DLM.DLL-pLM3S808LM3S808
DLM.DLL-pLM3S811LM3S811
DLM.DLL-pLM3S812LM3S812
DLM.DLL-pLM3S815LM3S815
DLM.DLL-pLM3S817LM3S817
DLM.DLL-pLM3S818LM3S818
DLM.DLL-pLM3S828LM3S828
DLM.DLL-pLM3S8530LM3S8530
DLM.DLL-pLM3S8538LM3S8538
DLM.DLL-pLM3S8630LM3S8630
DLM.DLL-pLM3S8730LM3S8730
DLM.DLL-pLM3S8733LM3S8733
DLM.DLL-pLM3S8738LM3S8738
DLM.DLL-pLM3S8930LM3S8930
DLM.DLL-pLM3S8933LM3S8933
DLM.DLL-pLM3S8938LM3S8938
DLM.DLL-pLM3S8962LM3S8962
DLM.DLL-pLM3S8970LM3S8970
DLM.DLL-pLM3S8971LM3S8971

JFlash合并hex及导出bin

  • File->Open data file...
  • File->Merge data file...
  • File->Save data file as...

STM32CubeMX TabSize 换为4个

CubeIDE

按PDF修改,CubeMx在plugin里没有相关参数

CubeMx

修改 X:\STM32CubeMX\db\templates 下边的模板文件,#t为两个空格,并且有些地方是直接打出的空格,所以要根据实际仔细修改每个地方(这样看来直接jar里面#td值也不是一劳永逸的);另外Doxygen前的空格有的用的#t,有的用的空格,所以也要自己改....

一般需要改到的文件就三个:

  • main.h - tpl_main_h.ftl
    文件内没有缩进,主要是加一个 __cplusplus 的后空格防止VsCode里的vcFormat把这个前花括号识别出来把后边缩进了。当然只有一个文件,也可以不改模板,在生成的文件里加也行。

注意不要定义 DO_NOT_DEFINE_THIS,这里只是欺骗代码格式化工具的,所以实际这三行不起作用。

#ifdef DO_NOT_DEFINE_THIS
}
#endif
  • main.c - tpl_main_c.ftl
  • stm32xx_it.c - stm32xx_it_c.ftl

sigrok安装驱动

sigrok支持linux(包含android), OS X, windows
下载地址: http://sigrok.org/wiki/Downloads

  • 安装好sigrok之后, 包含3个:PulseView, Zadig, Zadig(Win XP)
  • 插上saleae, 打开Zading
  • 先勾上edit, 把名称改为fx2lafw, 点击Install Driver

STM32 JLINK SWD调试器手动复位才能烧写的问题

STM32CubeMX 如果不打开SWD口,会导致烧录过一次程序后,无法自动烧录的问题。

  • CubeMX -> SYS -> Debug -> Serial Wire

"Insufficient RAM for Flash Algorithms"出错原因及解决方案

“Insufficient RAM for Flash Algorithms”错误一般会有一个“cannot load flash programming algorithm !”的提示窗口。

“Insufficient RAM for Flash Algorithms”从字面上解释是:“装载FLASH算法的RAM空间不足”。

原因:FLASH的烧写算法本身也相当于一个小程序,在jlink向FLASH烧写程序的过程中由芯片来执行,所以烧写算法在烧写过程中是需要分配内存空间的,打开Utilities选项卡的setting可以看到其配置选项;Ram For Algorithm里的Start和Size改大一点就可以。

STM32硬件错误HardFault_Handler的处理方法

在用Keil对STM32的程序进行仿真时程序有时会跑飞,停止仿真程序会停在HardFault_Handler函数里的死循环while(1)中。这说明STM32出现了硬件错误。

STM32出现硬件错误可能有以下原因:
(1)数组越界操作;
(2)内存溢出,访问越界;
(3)堆栈溢出,程序跑飞;
(4)中断处理错误;

方法1:

1.1在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击“STOP”停止仿真。

1.2 在Keil菜单栏点击“View”——“Registers Window”,在寄存器查看窗口查找R14(LR)的值。如果R14(LR) = 0xFFFFFFE9,继续查看MSP(主堆栈指针)的值,如果R14(LR) = 0xFFFFFFFD,继续查看PSP(进程栈指针)的值。我的程序R14(LR) = 0xFFFFFFF9,接下来以此为例。

1.3 在Keil菜单栏点击“View”——“Memory Windows”——“Memory1”,在“Address”地址栏中输入MSP的值:0x20001288,然后在对应的行里找到地址。地址一般以0x08开头的32位数。本例中,地址为0x08003CB9。

1.4 在Keil菜单栏点击“View”——“Disassembly Window”,在“Disassembly”窗口中右击,在下拉菜单中选择“Show Disassemblyat Address...”。在弹出框“Show Code atAdress”的地址框中输入地址0x08003CB9进行搜索,然后就会找到相对应的代码。这里的代码就是进入循环中断之前的情况。仔细查看附近区域的相关代码来排查错误具体原因。

方法2:

2.1在硬件中断函数HardFault_Handler里的while(1)处打调试断点,程序执行到断点处时点击“STOP”停止仿真。

2.2 在Keil菜单栏点击“View”——“Call Stack Window”弹出“Call Stack + Locals”对话框。然后在对话框中右键选择“Show Caller Code”,就会跳转到出错之前的函数处,仔细查看这部分函数被调用或者数组内存使用情况。
————————————————
版权声明:本文为CSDN博主「electrocrazy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/electrocrazy/article/details/78173558

STM32CubeMX 定时器配置时钟中的 auto-reload preload

结论

  1. auto-reload preload=Disable:自动重装载寄存器写入新值后,计数器立即产生计数溢出,然后开始新的计数周期
  2. auto-reload preload=Enable:自动重装载寄存器写入新值后,计数器完成当前旧的计数后,再开始新的计数周期

STM32Cubemx ADC配置详解

Parameter Settings

ADCs_Common_Settings

Mode: 设置ADC 工作模式(独立模式或多重模式)

  • 独立模式

    • Independent mode ADC1 和ADC2 工作在独立模式
  • 双重模式

    • Dual regular simultaneous + injected simultaneous mode ADC1 和ADC2 工作在同步规则模式和同步注入模式
    • regular regular simultaneous + alternate trigger mode ADC1 和ADC2 工作在同步规则模式和交替触发模式
    • Dual injected simultaneous mode only ADC1 和ADC2 工作在同步注入模式
    • Dual regular simultaneous mode only ADC1 和ADC2 工作在同步规则模式
    • Dual interleaved mode only ADC1 和ADC2 工作在交叉模式
    • Dual alternate trigger mode only ADC1 和ADC2 工作在交替触发模式
  • 三重模式

    • Triple combined regular simultaneous + injected simultaneous mode 工作在- 同步规则模式和同步注入模式
    • Triple combined regular simultaneous + alternate trigger mode 工作在同- 步规则模式和交替触发模式
    • Triple injected simultaneous mode only ADC1 和ADC2 工作在同步注入模式
    • Triple regular simultaneous mode only ADC1 和ADC2 工作在同步规则模式
    • Triple interleaved mode only ADC1 和ADC2 工作在交叉模式
    • Triple alternate trigger mode only ADC1 和ADC2 工作在交替触发模式
  • DMA Access Mode :(DMA)直接存储器存取访问模式(在多重模式下才有此项)
  • Delay between 2 sampling phases: 2个抽样阶段的延迟(在多重模式下才有此项)

ADCs _Settings

  • Clock Prescaler ADC的时钟分频数
  • Resolution 分辨率(意思是AD位数)
  • Data Alignment ADC 数据向左边对齐还是向右边对齐
  • Scan Conversion Mode ADC工作在扫描模式(多通道)还是单次(单通道)模式。可以设置这个参数为ENABLE 或者DISABLE。
  • Continuous Conversion Mode ADC模数转换工作在连续模式。可以设置这个参数为 ENABLE或者DISABLE 。
  • Discontinuous Conversion Mode ADC模数转换工作在不连续模式(单次模式)。可以设置这个参数为 ENABLE或者DISABLE 。
  • DMA Continuous Requests DMA连续请求
  • End of Conversion Selection 转换选择结束

ADCs_Regular_ConversionMode(规则通道转换模式)

  • Number of Conversion ADC转换的通道数量
  • External Trigger Conversion Source ADC外部触发转换源
  • External Trigger Conversion Edge ADC外部触发转换边沿(意思是上升沿/下降沿触发)

Rank

  • Channel ADC转换通道
  • Sampling Time ADC转换时间

ADC_Injected_ConversionMode(注入通道转换模式)

  • Number of Conversion ADC转换的注入通道数
    注入通道数不为0时,才有下面的配置项
  • External Trigger Source ADC外部触发转换源
  • External Trigger Edge ADC外部触发转换边沿(意思是上升沿/下降沿触发)
  • Injected Conversion Mode ADC注入转换通道模式

Rank(ADC_Injected_ConversionMode的(Number of Conversion )ADC转换的注入通道数不为0时,才能配置注入通道的其他参数)

  • Channel ADC转换通道
  • Sampling Time ADC转换时间
  • Injected Offset ADC注入通道的偏值

WatchDog

  • Enable Analog WatchDog Mode
————————————————
版权声明:本文为CSDN博主「qq_43225938」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_43225938/article/details/84098810

STM32: ADC采样频率及相应时间的确定

一、STM32 ADC 介绍

  STM32 ADC是一个12 位精度、 一种逐次逼近型模拟数字转换器。它有多达18个通道,可测量16个外部和2个内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。 ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。

  ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。转换时最快为1us,当ADC的输入时钟超过14MHz时其会损失一些精度。当然如果可以达到我们的精度,输入时钟高点也没事。

  在网上看到一回答ADC不超过14MHz的答案:资料上的都是推荐,事实上很多芯片的设计都是有超额余量的,很多人都会超额的利用这些资源,并且很好的工作。

  若所看的程序频率是超过14M,也没有错,可能作者的目的在于快速而宁愿损失一些精度,ADC的分辨率是12位,若是超过这个频率也是工作的,只不过采样到的精度可能仅到10位,若这个已到 作者的要求,也无错误之说了。

  1. 看参考手册,确定ADC 的时钟以及通道采样时间
  2. ADC 时钟 ADC接在APB2上,APB2的时钟为72MHz,通过分频的方式给ADC提供时钟,预分频主要有2、4、6、8四种分频方式。
  3. 通道采样时间 通道采样时间会影响采样的精度。
  4. 转换时间
  5. 公式:TCONV = 采样时间 + 12.5 个周期
  6. 例如:当ADCCLK=14MHz和1.5周期的采样时间 TCONV = 1.5 + 12.5 = 14 周期 = 1μs
  • 一般情况,如果是软件启动,那么转换时间即是采样周期。
  • 若通过定时器进行触发启动ADC,则还需要加上定时器的相关时间。
  1. 确定采样率
    如果我们的输入信号是 20KHz (周期为 50us),若要将它恢复出来,一个周期最少采样20个点,此时采样率要达到400KHz,所以ADC的采样率必须在400KHz 以上。为了达到最好的精度,我们选取ADC时钟为12MHz,即6分频。在12MHz 以及保证采样率的情况下,采样时间越长其,准确性就越好。可以计算 2.5us = (12.5 + 采样时间) / 12MHz ,可以求得采样时间为17.5;所以采样时间的选择必须小于等于17.5个周期,才能保证采样率在400KHz 以上。所以我们可以选择1.5、7.5、13.5,为获得更高的精准度,我们可以选择13.5个周期。切记采样点数必须达到要求。

二、采样频率的确定

  1. 由时钟控制器提供的ADCCLK 时钟和PCLK2(APB2 时钟)同步。CLK 控制器为ADC 时钟提供一个专用的可编程预分频器。
  2. 一般情况下在程序中将 PCLK2 时钟设为与系统时钟相同
  3. RCC\_HCLKConfig(RCC\_SYSCLK\_Div1);
  4. RCC\_PCLK2Config(RCC\_HCLK\_Div1);
  5. RCC\_PCLK1Config(RCC\_HCLK\_Div2);
  6. 在时钟配置寄存器(RCC\_CFGR)中有为ADC时钟提供一个专用的可编程预分器
  7. 位15:14 ADCPRE:ADC预分频,由软件设置来确定ADC时钟频率
      00:PCLK2 2分频后作为ADC时钟
      01:PCLK2 4分频后作为ADC时钟
      10:PCLK2 6分频后作为ADC时钟
      11:PCLK2 8分频后作为ADC时钟
      可对其进行设置,如:RCC\_ADCCLKConfig(RCC\_PCLK2\_Div4);
  • 另外还有 ADC 时钟使能设置
    RCC\_APB2PeriphClockCmd(RCC\_APB2Periph\_ADC1 | RCC\_APB2Periph\_ADC2 | RCC\_APB2Periph\_GPIOC, ENABLE);
  1. 采样时间和转换时间
      ADC 使用若干个ADC\_CLK周期对输入电压采样,采样周期数目可以通过ADC\_SMPR1和ADC\_SMPR2寄存器中的SMP[2:0]位而更改。每个通道可以以不同的时间采样。
      
    总转换时间如下计算:
      TCONV = 采样时间 + 12.5 个周期
    例如:
      当ADCCLK=36MHz和239.5周期的采样时间 TCONV = 239.5 + 12.5 = 252 周期 = 7μs
      若你采样的是1KHz的正弦波信号,采样了10000个点,则其中就有70个周期。

关于PWM Mode、CH Ploarity对输出的影响

ARR为1000,占空比为200,通过示波器看高电平的位置,占空比在这里用数字表示。

PWM ModeCH PloarityHighLow
1High200800
1Low800200
2High800200
2Low200800

_

FreeModbus

FreeModbus简介

FreeMODBUS是一个奥地利人写的Modbus协议。它是一个针对嵌入式应用的一个免费(自由)的通用MODBUS协议的移植。Modbus是一个工业制造环境中应用的一个通用协议。

Modbus通信协议栈包括两层:Modbus应用层协议,该层定义了数据模式和功能;另外一层是网络层。

FreeModbus提供了RTU/ASCII 传输模式及TCP协议支持。

FreeModbus协议对硬件的需求非常少——基本上任何具有串行接口,并且有一些能够容纳modbus数据帧的RAM的微控制器都足够了。

[Modbus协议链接:
https://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf](https://modbus.org/docs/Modbus_Application_Protocol_V1_1b3.pdf)

  • 现支持如下功能码:
    Read Input Register (0x04)
    Read Holding Registers (0x03)
    Write Single Register (0x06)
    Write Multiple Registers (0x10)
    Read/Write Multiple Registers (0x17)
    Read Coils (0x01)
    Write Single Coil (0x05)
    Write Multiple Coils (0x0F)
    Read Discrete Inputs (0x02)
    Report Slave ID (0x11)

FreeModbus的获取

目前,FreeModbus最新版本是V1.6,可以通过官网下载:
https://www.embedded-solutions.at/en/freemodbus-downloads/

可以下载压缩包,也可以使用git工具来下载。
https://github.com/cwalter-at/freemodbus

硬件需求

FreeModbus协议对硬件的需求非常少——基本上任何具有串行接口,并且有一些能够容纳modbus数据帧的RAM的微控制器都足够了。

  1. 一个异步串行接口,能够支持接收缓冲区满和发送缓存区空中断。
  2. 一个能够产生RTU传输所需要的t3.5字符超时定时器的时钟。

对于软件部分,仅仅需要一个简单的事件队列。在使用操作系统的处理器上,可通过单独定义一个任务完成Modbus时间的查询。小点的微控制器往往不允许使用操作系统,在那种情况下,可以使用一个全局变量来实现该事件队列(Atmel AVR 移植使用这种方式实现)。

实际的存储器需求决定于所使用的Modbus模块的多少。下表列出了所支持的功能编译后所需要的存储器。ARM是使用GNUARM编译器3.4.4使用-O1选项得到的。AVR项数值是使用WinAVR编译器3.4.5使用-Os选项编译得到的。

移植

一、 物理层接口文件的修改
在物理层,用户只需完成串行口及超时定时器的配置即可。具体应修改接口文件portserial.c及porttimer.c。

portserial.c中函数的修改

  1. void vMBPortSerialEnable( BOOL xRxEnable, BOOL xTxEnable )
    此函数的功能为设置串口状态。有两个参数:xRxEnable及xTxEnable。当xRxEnable为真时,应使能串口接收及接收中断。在RS485通讯系统中,还要注意将RS485接口芯片设为接收使能状态;当xTxEnable为真时,应使能串口发送及发送中断。在RS485通讯系统中,还要注意将RS485接口芯片设为发送使能状态。
  2. void vMBPortClose( void )
    此函数的功能是关闭Modbus通讯端口,具体的,应在此函数中关闭通讯端口的发送使能及接收使能。
  3. BOOL xMBPortSerialInit(UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, eMBParity eParity)
    此函数的功能是初始化串行通讯端口。有四个参数:ucPORT、ulBaudRate、ucDataBits及eParity。参数ucPORT可以忽略;参数ulBaudRate是通讯端口的波特率,应根据此数值设置所使用硬件端口的波特率;参数ucDataBits为通讯时所使用的数据位宽,注意,若使用RTU模式,则有ucDataBits=8,若使用ASCII模式,则有ucDataBits=7,应根据此参数设置所使用硬件端口的数据位宽;eParity为校验方式,eParity=MB_PAR_NONE为无校验,此时硬件端口应设置为无校验方式及两个停止位,eParity=MB_PAR_ODD为奇校验,此时硬件端口应设置为奇校验方式及一个停止位,eParity= MB_PAR_EVEN为偶校验,此时硬件端口应设置为偶校验方式及一个停止位。函数返回值务必为TRUE。
  4. BOOL xMBPortSerialPutByte(CHAR ucByte)
    此函数的功能为通讯端口发送一字节数据。参数为:ucByte,待发送的数据。应在此函数中编写发送一字节数据的函数。注意,由于使用的是中断发送,故只需将数据放到发送寄存器即可。函数返回值务必为TRUE。
  5. BOOL xMBPortSerialGetByte( CHAR * pucByte )
    此函数的功能为通讯端口接收一字节数据。参数为: pucByte,接收到的数据。应在此函数中编写接收的函数。注意,由于使用的是中断接收,故只需将接收寄存器的值放到 pucByte即可。函数返回值务必为TRUE。
  6. void prvvUARTTxReadyISR(void)
    发送中断函数。此函数无需修改。只需在用户的发送中断函数中调用此函数即可,同时,用户应在调用此函数后,清除发送中断标志位。
  7. void prvvUARTRxISR(void)
    接送中断函数。此函数无需修改。只需在用户的接收中断函数中调用此函数即可,同时,用户应在调用此函数后,清除接收中断标志位。

porttimer.c中函数的修改

  1. BOOL xMBPortTimersInit( USHORT usTim1Timerout50us )
    此函数的功能为初始化超时定时器。参数为:usTim1Timerout50us,50us的个数。用户应根据所使用的硬件初始化超时定时器,使之能产生中断时间为usTim1Timerout50us*50us的中断。函数返回值务必为TRUE。
  2. void vMBPortTimersEnable( )
    此函数的功能为使能超时定时器。用户需在此函数中清除中断标志位、清零定时器计数值,并重新使能定时器中断。
  3. void vMBPortTimersDisable( )
    此函数的功能为关闭超时定时器。用户需在此函数中清零定时器计数值,并关闭定时器中断。
  4. void TIMERExpiredISR( void )
    定时器中断函数。此函数无需修改。只需在用户的定时器中断中调用此函数即可,同时,用户应在调用此函数后清除中断标志位。

二、应用层回调函数的修改
在应用层,用户需要定义所需要使用的寄存器,并修改对应的回调函数。回函数有如下几个:

  1. eMBErrorCode eMBRegInputCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs )
    输入寄存器回调函数。* pucRegBuffer为要添加到协议中的数据,usAddress为输入寄存器地址,usNRegs为要读取寄存器的个数。用户应根据要访问的寄存器地址usAddress将相应输入寄存器的值按顺序添加到pucRegBuffer中。
  2. eMBErrorCode eMBRegHoldingCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNRegs, eMBRegisterMode eMode )
    保持寄存器回调函数。* pucRegBuffer为要协议中的数据,usAddress为输入寄存器地址,usNRegs为访问寄存器的个数,eMode为访问类型(MB_REG_READ为读保持寄存器,MB_REG_WRITE为写保持寄存器)。用户应根据要访问的寄存器地址usAddress将相应输入寄存器的值按顺序添加到pucRegBuffer中,或将协议中的数据根据要访问的寄存器地址usAddress放到相应保持寄存器中。
  3. eMBErrorCode eMBRegCoilsCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNCoils, eMBRegisterMode eMode )
    读写线圈回调函数。* pucRegBuffer为要添加到协议中的数据,usAddress为线圈地址,usNCoils为要访问线圈的个数,eMode为访问类型(MB_REG_READ为读线圈状态,MB_REG_WRITE为写线圈)。用户应根据要访问的线圈地址usAddress将相应线圈的值按顺序添加到pucRegBuffer中,或将协议中的数据根据要访问的线圈地址usAddress放到相应线圈中。
  4. eMBErrorCode eMBRegDiscreteCB( UCHAR * pucRegBuffer, USHORT usAddress, USHORT usNDiscrete )
    读离散线圈回调函数。* pucRegBuffer为要添加到协议中的数据,usAddress为线圈地址,usNDiscrete为要访问线圈的个数。用户应根据要访问的线圈地址usAddress将相应线圈的值按顺序添加到pucRegBuffer中。

三、应用层初始化及协议访问
用户只需在主函数中调用协议初始化代码,及消息处理函数即可。需用户调用的函数有如下几个:

  1. eMBErrorCode eMBInit( eMBMode eMode, UCHAR ucSlaveAddress, UCHAR ucPort, ULONG ulBaudRate, eMBParity eParity )
    协议初始化函数。eMode为所要使用的模式,用户可选MB_RTU(RTU模式)、MB_ASCII(ASCII模式)或MB_TCP(TCP模式);ucSlaveAddress为从机地址,用户根据需要,取值为1~247(0为广播地址,248 ~ 255协议保留);ulBaudRate为通信波特率,用户根据需要选用,但务必使主机能支持此波特率;eParity为校验方式,用户根据需要选用,但务必使主机能支持此校验方式。
  2. eMBErrorCode eMBSetSlaveID( UCHAR ucSlaveID, BOOL xIsRunning, UCHAR const pucAdditional, USHORT usAdditionalLen )
    从机ID设置函数。注意,ID表示的是设备的类型,不同于ucSlaveAddress(从机地址)。对同一通讯系统中,可以有相同的ucSlaveID,但不可以有相同的ucSlaveAddress。ucSlaveID为一字节的设备ID号;xIsRunning为设备的运行状态,0xFF为运行,0x00为停止; pucAdditional为设备的附加描述,根据需要添加;usAdditionalLen为附加描述的长度(按字节计算)。此函数不是必须调用的。但当一个Modbus通讯系统中有不同种设备时,应调用此函数添加对应设备的描述。
  3. eMBErrorCode eMBPoll( void )
    轮询事件查询处理函数。用户需在主循环中调用此函数。对于使用操作系统的程序,应单独创建一个任务,使操作系统能周期调用此函数。

初始化及运行

FreeModbus是基于消息队列的协议。协议通过检测相应的消息来完成对应功能。 协议栈的初始化及运行流程如下:

  1. 首先调用eMBErrorCode eMBInit( eMBMode eMode, UCHAR ucSlaveAddress, UCHAR ucPort, ULONG ulBaudRate, eMBParity eParity )完成物理层设备的初始化, 主要包括:BOOL xMBPortSerialInit( UCHAR ucPORT, ULONG ulBaudRate, UCHAR ucDataBits, eMBParity eParity )串口初始化,设定波特率、数据位数、校验方式;BOOL xMBPortTimersInit( USHORT usTim1Timerout50us )定时器初始化,设定T35定时所需要的定时器常数。
  2. 调用(此处非必需)eMBErrorCode eMBSetSlaveID( UCHAR ucSlaveID, BOOL xIsRunning,UCHAR const *pucAdditional, USHORT usAdditionalLen )指定设备ID。
  3. 调用eMBErrorCode eMBEnable(void)使能协议栈 ,主要包括:static pvMBFrameStart pvMBFrameStartCur(函数指针)协议栈开始,将eRcvState设为STATE_RX_INIT状态,调用void vMBPortSerialEnable( BOOL xRxEnable, BOOL xTxEnable )使能接收,调用void vMBPortTimersEnable( )使能超时定时器。
  4. 在3中使能了超时定时器,故经过T35时间后,发生第一次超时中断,在中断中,向协议栈发送消息EV_READY(Startup finished),并调用void vMBPortTimersDisable( )关闭超时定时器,同时将eRcvState设为STATE_RX_IDLE。此时,协议栈可以接收串口数据。注意,此处首先启用一次超时定时器是因为初始化完成时,串口有可能已经有数据,因为无法判断第一个数据是请求的开始,故等待T35,接收下一帧请求。
  5. 此时,主函数调用eMBErrorCode eMBPoll( void )检测事件。
  6. 若发生串口接收中断,且eRcvState为STATE_RX_IDLE(4中已将eRcvState设为STATE_RX_IDLE),则向接收缓存中存入接收到的字符,同时将eRcvState设为STATE_RX_RCV状态,并清零超时定时器。在下一个数据来到时,不断将数据存入接收缓存,并清零超时定时器。
  7. 如果没有接收完成,则不可能发生超时中断。发生超时中断,说明T35时间内未收到新的串口数据,根据Modbus协议的规定,这指示着一帧请求数据接收完成。在中断中,向协议栈发送消息EV_FRAME_RECEIVED(Frame received),等待协议栈处理此消息。
  8. 主函数调用eMBErrorCode eMBPoll( void )检测到事件EV_FRAME_RECEIVED后,调用static peMBFrameReceive peMBFrameReceiveCur简单判断请求帧数据,并向协议栈发送消息EV_EXECUTE(Execute function)。
  9. 主函数调用eMBErrorCode eMBPoll( void )检测到事件EV_EXECUTE后,根据相应的请求代码查找处理该功能的函数指针来处理该功能。 若不是广播消息,则调用static peMBFrameSend peMBFrameSendCur发送回复消息,在此函数中,只把要回复的数据复制到了串口缓存中,同时将eSndState设为STATE_TX_XMIT(Transmitter is in transfer state),并通过调用void vMBPortSerialEnable( BOOL xRxEnable, BOOL xTxEnable )使能发送中断。注意,发送中断使能后,由于串口发送寄存器本来就是空的,故在使能后将进入发送中断中。
  10. 发送中断中,且eSndState为STATE_TX_XMIT(9中已将eSndState设为STATE_TX_XMIT),则将串口缓存中的数据发送出去,同时不断对发送字符个数统计,当发送完成后,向协议栈发送消息EV_FRAME_SENT(Frame sent)。
  11. 主函数调用eMBErrorCode eMBPoll( void )检测到事件EV_FRAME_SENT后,不处理此消息。
  12. 当串口接收到数据后,协议栈将重复6-11处理消息。

资料来源:

https://baike.baidu.com/item/freemodbus/7566841?fr=aladdin

FreeModbus启动流程分析

int main(void)
{
    /* mode RTU, address 0x01, port uart3, baudrate 19200, no parity */
    eMBInit( MB_RTU, 0x01, 3, 19200, MB_PAR_NONE );

    /* Enable the Modbus Protocol Stack. */
    eMBEnable( );

    while (1)
    {
        eMBPoll( );
    }
————————————————
版权声明:本文为CSDN博主「宁静致远2021」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_46577050/article/details/120767562

FreeModbus中定时器周期usTimerT35_50us的计算方式

  • usTimerT35_50us

    /* If baudrate > 19200 then we should use the fixed timer values
     * t35 = 1750us. Otherwise t35 must be 3.5 times the character time.
     */
    if( ulBaudRate > 19200 )
    {
      usTimerT35_50us = 35;       /* 1800us */
    }
    else
    {
      /* The timer reload value for a character is given by:
       *
       * ChTimeValue = Ticks_per_1s / ( Baudrate / 11 )
       *             = 11 * Ticks_per_1s / Baudrate
       *             = 220000 / Baudrate
       * The reload for t3.5 is 1.5 times this value and similary
       * for t3.5.
       */
      usTimerT35_50us = ( 7UL * 220000UL ) / ( 2UL * ulBaudRate );
    }
    if( xMBPortTimersInit( ( USHORT ) usTimerT35_50us ) != TRUE )
    {
      eStatus = MB_EPORTERR;
    }

计算方法
usTimerT35_50us:50us的倍数,定时器的传入参数,假设设定为40,那么定时器的定时周期即为40*50us=2ms,所以定时器初始化部分需要提前设计好定时周期为50us*传入参数

  • 波特率大于19200,那么定时器周期固定为 1750us = 35*50us
  • 波特率小于等于19200时,11 = 1起始位+8数据位+1奇偶校验位+1停止位

    1个字节传送所需时间 charTime=(11*1000/baudRate)ms,假设波特率为19200,charTime=11*1000/19200=0.57ms,3.5个字符需要的时间 3.5*charTime=2ms,即定时器周期需要设定为2ms,传入参数即为 usTimerT35_50us=2ms/50us=40

    FreeModubs作者变种出一个巧妙的公式:usTimerT35_50us = (7UL * 220000UL ) / (2UL * ulBaudRate ),检验公式,ulBaudRate代入19200,可得:usTimerT35_50us = 40

————————————————
版权声明:本文为CSDN博主「DingUXiu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u010650845/article/details/121374170

https://www.embedded-solutions.at/files/freemodbus-v1.6-apidoc/

[PDF] todo

开关电源三大基础拓扑解析:BUCK/BOOST/BUCK-BOOS

1、BUCK 拓扑电路

  Buck电路是一个降压电路,Vi=Vls+Vo。因Vi>Vo,故具有降压作用。



  • (1)开关管S导通阶段
      当开关闭合时,续流二极管D是截止的,由于输入电压Vi与储能电感Ls接通,因此输入-输出压差(Vi-Vo)就加在Ls上,使通过Ls上的电流线性地增加。在此阶段,除向负载供电外,还有一部分电能储存在电感Ls和电容Cr中。



  • (2)开关管S关断阶段
      当开关断开时,Ls与Vi断开,但由于电感电流不能在瞬间发生突变,因此在电感Ls上就产生反向电动势以维持通过的电流不变。此时续流二极管D导通,储存在电感Ls中的电能就经过有D构成的的回路对负载供电。(主要是电容C对负载供电,此阶段一直给电容充电,维持电压稳定)



2、Boost拓扑电路

  Boost电路是一个升压电路,Vo=Vi+Vls-Vd ,由于Vd值较小,忽略不计,Vi+Vls>Vo,故具有升压作用。



  • (1)开关管导通阶段
      当开关闭合时,二极管D截止,输入电压经过电感Ls后直接返回,这导致通过通过电感的电流线性地增大。此时输出滤波电容向负载放电。



  • (2)开关断开阶段
      当开关断开时,由于电感电流不能在瞬间发生突变,因此在电感Ls上产生反向电动势Vls以维持通过电流不变。此时二极管D导通,Vi和Vls两电压串联后,以超过Vi大小的电压向负载供电,并对输出滤波电容充电。



3、BUCK-BOOST拓扑电路

  BUCK-BOOST电路的输入电压与输出电压的极性是相反的。



  • (1)开关管S导通阶段
      当开关闭合时,输入电压通过电感L直接返回,在电感Ls上储能,此时电容Cr放电,给负载供电。



  • (2)开关管S截止阶段
      当开关断开时,在电感Ls上产生反向电动势,使二极管D从截止变成导通。电感给负载供电并对输出电容充电,维持输出电压不变。



https://mp.weixin.qq.com/s/qx96-9YHZmxLWHQ3FRO7nw

二极管的分类和作用

  • 一、整流二极管
      利用二极管单向导电性,可以把方向交替变化的交流电变换成单一方向的脉动直流电。
  • 二、检波二极管
      把叠加在高频再波中的低频信号检测出来的器件,具有较高的检波频率和良好的频率特性,其在收音机中起检波作用。
  • 三、开关二极管
      由于半导体二极管在正向偏压下导通电阻很小,而在施加反向偏压截止时,截止电阻很大,在开关电路中利用半导体二极管的这种单向导电特性就可以对电流起到接通和关断的作用。
  • 四、稳压二极管
      稳压二极管,又名齐纳二极管,是利用PN结反向击穿时电压基本上不随电流变化而变化的特点来达到稳压的目的,因而其在电路中起到的作用就是稳压作用。
  • 五、快速恢复二极管(FRD)
      这是一种新型的半导体二极管,其开关特性好,反向恢复时间短,常用于高频开关电源中做整流二极管。彩电等家用电器采用开关电源供电的整流二极管通常为此类二极管,而不能是普通的整流二极管,否则电器将可能不能正常工作。
  • 六、肖特基二极管(SBD)
      肖特基二极管,又称肖特基势垒二极管,简称SBD,是一种低功耗、大电流、超高速半导体器件。其反向恢复时间极短(可以小到几纳秒),正向导通压降仅0.4V左右,而整流电流却可达到几千安培,这些优良特性都是快速恢复二极管所无法比拟的。
  • 七、瞬态电压抑制二极管
      简称TVS管,是在稳压管的工艺基础上发展的一种半导体器件。其在两端电压高于额定值时,会瞬间导通,两端电阻将以极高的速度从高阻变为低阻,从而吸收一个极大的电流,将管子两端的电压钳位在一个预定的数值上。此类二极管主要应用于快速过压保护电路中。
  • 八、发光二极管
      英文简称LED,是采用磷化镓、磷砷化镓等半导体材料制成的。此类二极管除了具有单向导电特性之外,还可以将电能转换为光能。其发光的颜色主要由制作管子的材料以及参入杂质的种类决定的,目前主要颜色有蓝色、绿色、黄色、红色、橙色、白色等。
  • 九、雪崩二极管
      雪崩二极管是在稳压管工艺上发展起来的一种微波功率器件,它在外加电压的作用下可以产生高频振荡。长用于微波通信、雷达、战术导弹、遥控、遥测等设备当中。
  • 十、双向触发二极管
      双向触发二极管,又称二端交流器件(DIAC),它是一种硅双向电压触发开关器件。当双向触发二极管两端施加的电压超过其击穿电压时导通,导通将持续到电流中断或降到器件的最小保持电流才能再次关断。此类二极管通常用在过压保护电路、移相电路、晶闸管触发电路、定时电路中。
  • 十一、变容二极管
      变容二极管,简称VCD,是利用反向偏压来改变PN结电容量的特殊半导体器件。它相当于一个容量可变的电容器,其两个电极之间的PN结电容大小,随加到变容二极管两端反向电压大小的改变而改变。此类二极管主要用于彩电调谐回路(如彩电的高频头)中,作为一个可以通过控制的自动微调电容器。
http://www.360doc.com/content/17/0403/15/36264429_642551574.shtml

Trench肖特基整流器:功能、优点和用例

肖特基二极管以德国物理学家华特·汉斯·肖特基命名,主要由金属-半导体接面组成。肖特基二极管的电气性能受到正向压降、泄漏电流和反向阻断电压之间的物理权衡的影响。Trench肖特基二极管可被视为肖特基二极管的进一步发展,本文将讨论Trench肖特基整流器的功能和优点。

  理想的整流器通常具有低正向压降、高反向阻断电压、零泄漏电流和低寄生电容,从而帮助实现高开关速度。考虑正向压降时,有两个主要因素:结点处的压降(PN整流器为PN结,肖特基整流器为金属-半导体结)以及漂移区的压降。虽然PN结的正向压降在本质上由内置电压决定,因而主要由所选半导体决定,但肖特基势垒整流器中金属-半导体接面的正向压降可通过选择肖特基金属来修改,而肖特基势垒就是半导体的金属功函数和电子亲合能之差。通过使用具有低金属功函数的肖特基金属,可最大限度减少金属半导体接面的压降。但是,结点处的正向压降和肖特基整流器的泄漏电流之间存在权衡关系,因为泄漏电流的级别也由肖特基势垒和金属半导体接面的电场决定。除了该权衡,为实现高反向阻断电压,当漂移区的厚度进一步增加时,结点处低压降的优势可能会消失。因此,肖特基整流器的反向阻断电压历来限于200V以下。



图1:平面肖特基整流器(左)和反方向Trench肖特基整流器(右)中的等势线。

  鉴于该解释,有人可能会问,不管对低泄漏电流和高反向阻断电压的要求,该如何保持肖特基整流器的主要优势——即金属半导体接面的低压降?在这里,Trench整流器被证明非常有用。

  Trench肖特基整流器背后的概念被称为“RESURF”(降低表面电场(reduced surface field))。RESURF的效应如图1所示。在平面肖特基整流器中,等势线堆积在上电极附近,导致表面附近的电场较高。因此,随着反向电压增加,泄漏电流显著增加,并且当表面附近的电场超出临界值时,会发生早期击穿现象。通过将沟道蚀刻到硅并在其中填满多晶硅(通过薄介质以电子方式与漂移区分离),沟道充当半导体中的一种场板,在反方向上耗尽漂移区,沿漂移区呈现平面电场分布。因此,沟道概念可缓和表面附近的电场,与具有相同外延结构的平面器件相比,可产生更高的击穿电压,从而实现更低的泄漏电流。

  安世半导体开发并推出了电压范围介于45-100 V之间的一系列Trench肖特基整流器(PMEG*T系列)。这些器件可在正向压降Vf和泄漏电流IR之间实现适宜的权衡。典型的60V产品的Vf-IR权衡如图2所示。在该图中,根据125°C条件下最大正向电流时的正向压降,绘制了最大反向电压时的泄漏电流。为进行比较,该图还绘制了另外两个制造商的一些Trench和平面肖特基整流器。对于给定的正向压降,安世半导体产品显示出最低的泄漏电流。



图2:125°C条件下,最大反向电压和最大正向电流时的IR-Vf权衡。

  与具有可比正向压降的同等平面肖特基整流器相比,Trench肖特基整流器的泄漏电流较低,这表示Trench器件的安全工作区域更宽。因此,在必须耐受较高环境温度的应用中,如汽车领域,Trench肖特基整流器是合适的选择,因为它们更加稳健,可防止热失控(当整流器泄漏电流造成的耗散功率增加快于通过系统热阻的散热时发生的不稳定)。

  Trench肖特基整流器的等效电路图如图3所示。除了肖特基接触提供的普通寄生电容,沟道结构中的电极和薄介质会产生第二个寄生电容。这意味着,在每单位面积上,Trench肖特基整流器的总寄生电容比平面肖特基整流器高。对于每个特定应用,必须考虑这一点。在设计中,如果总损耗主要来自开关损耗,则使用平面Schottky整流器可能更好,因为它们的寄生电容较低,尽管它们的泄漏电流较高或正向压降较高。而对于正向压降或泄漏电流是总损耗主导因素的应用,应该使用Trench整流器。



图3:Trench肖特基整流器的等效电路图。电路元件在器件横截面中突出显示。

  该等效电路图还显示了以反向恢复测量为特点的器件开关行为。进行此类测量的方式是正向偏置整流器,然后将器件切换到反向状态。由于器件中存储的电荷(在等效电路中表示为寄生电容)必须在二极管阻断之前先去除,因此便发生了所谓的整流器反向恢复电流。Trench肖特基整流器及具有可比芯片尺寸的平面肖特基整流器的斜坡反向恢复测量如图4所示。在该测量中,电流以100A/µs的速率下降。图表的放大区域显示,与平面整流器相比,Trench整流器的反向恢复电流更大、反向恢复时间更长,这得益于其较高的寄生电容(如图3所示)。斜坡反向恢复测量还表明,Trench整流器产生的振铃往往比平面器件衰变得更快。同样,在Trench整流器的等效电路图中可以找到其中的一个原因。电路中的额外RC元件有助于抑制产生的振铃。因此,在对EMC敏感的应用中,使用Trench整流器可能比使用平面整流器更加明智。

  总之,从应用的角度来看,可以得出以下结论:如果正向压降和泄漏电流之间需要更好的权衡,则Trench整流器是正确选择,前提是应用能够耐受较高的寄生电容。同时,在器件开关期间,等效电路中的额外RC元件有助于抑制潜在振铃,因此在对EMC敏感的应用中,Trench整流器是首选。在环境温度升高的高功率密度应用中,也应该选择Trench整流器,因为它们更加稳健,可避免热失控造成的影响。



图4:Trench和平面整流器上的斜坡反向恢复测量。100A/µs下降速率。

https://www.eet-china.com/news/201903121034.html

选择mos管需要考虑那些参数

  MOS管参数每一个参数详解-收藏版_树卡花-CSDN博客_mos管参数.pdf
  一般来说,考虑的参数是Vds,Ids以及Rds这三个,还有有的会考虑Ciss这个参数的。VDSS、、ID、RDS(ON)、VGS(th)、还有一些开关时间,工作温度范围。

PCB布线注意点

1、电源、大电流、小信号

2、高速、高频、敏感关键信号

3、感性、辐射信号区块布局布线

4、开关信号、数据信号

  

  • 电源
      载流:线宽及载流条开窗(按1oz1mm1A)、过孔(按1mm1A)、散热铺铜开窗
      流向:单点接地(低频)、流经顺序(冲击保护钳位等->EMIC储能滤波->引脚)、走线环路(与回流组成的环路尽量小)
      压差及隔离安规
  • 大电流:同电源-载流
  • 小信号:少穿层、3倍线宽避空或铺铜屏蔽、(回流路径)
  • 高速:阻抗匹配、回流路径、干扰避空及铺地避空、少过孔及滤波电容匹配
  • 感性、高频:单独成块,不铺地
  • 数据信号:长信号回流路径(伴地)

51单片机读取输入时,为什么要先写高电平呢?

  以P1口为例,下面这个图是51单片机P1口的内部结构。

  
  51单片机的有4个端口,这4个端口都是双向的I/O端口,其中P0口是开漏输出,即内部没有上拉电阻,而P1、P2、P3口内部都有上拉电阻,所以很多原理图的P0口都会加上拉电阻。

  在读取之前,先输出1,Q' = 0,T截止,此时输入的是什么,单片机读取到的就是什么。
  如果之前由于其他原因,输出过0,读取之前没有输出1,那么Q' = 1,T导通,引脚输出一直为0,无论外部输入为0或者1,单片机读取到的一直为0。
  所以为了保险起见,不管之前是否输出过0,在读取之前都先输出1,然后读取,这样就能保证读取到正确的输入状态了。

作者:知乎用户
链接:https://www.zhihu.com/question/309739319/answer/578521647
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

充电时供电自动切换电路

  语言描述:PMOS控制BAT支路,VCC为PMOS的控制端;外接电源时PMOS截止BAT断开,由VCC经过防BAT反压二极管输出;无电源VCC时PMOS导通,由BAT经过PMOS输出。

气压传感器BMP280与MS5611哪个好?

  在性能上来说MS5611要好,MS5611精度10cm,BMP280在1m。可这两货的定位导致了价格上的巨大差别。MS系列一向是高精度微传感气压计的代表,现在的多旋翼飞控很大一部分都在使用MS5611,价格也是25左右。而BMP280的定位是手机等便携低功耗设备,对精度与稳定性要求没那么高,价格在5左右。具体选型就看个人的需求了。

ESP8285与ESP8266的差异

  由于ESP8285等价于ESP8266 加上一片1MB Flash,因此ESP8285与ESP8266使用的是同一套SDK,即ESP8266的SDK。ESP8285相比于ESP8266有如下差异:

  • ESP8285内部集成1MB Flash,DOUT模式。ESP8266则需要外接Flash。
  • ESP8285比ESP8266额外多出GPIO9和GPIO10供用户使用。
  • ESP8285的固件在编译和下载时需要将SPI MODE设置为DOUT,否则下载后无法正常运行。
版权声明:本文为CSDN博主「Igor Sun」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/deflypig/article/details/107450852

AT89C51与AT89S51的区别

  • 1.引脚功能
      引脚几乎相同,改变是,在AT89S51 P1.5中,P1.6,P1.7具有第二功能,即这三个引脚的第二功能构成一个串行ISP编程接口。
  • 2.编程功能
      AT89C51仅支持并行编程,而AT89S51不仅支持并行编程,还支持ISP在线编程。在编程电压方面,AT89C51除5V外还需要12V Vpp才能正常工作,而AT89S51只需4-5V。
  • 3.燃烧次数较多
      AT89S51标称燃烧次数为1000次,实际为1000-10000次,这更有利于启动学习者反复燃烧,降低学习成本。
  • 4.更高的工作频率
      AT89C51的最高工作频率为24 MHZ,而AT89S51的最高工作频率为33 MHZ。 (AT89S51有两种型号,分别支持24 MHZ和33 MHZ的最大工作频率。)因此它具有更快的计算速度。
  • 5.更宽的功率范围
      AT89S51工作电压范围,高达4-5.5V,而AT89C51底部4.8V,高于5.3V时正常运行。
  • 6.更强的抗干扰性
      AT89S51内部集成看门狗定时器,而AT89C51需要外部看门狗定时器电路,或使用单片机内部定时器组成软件看门狗,实现软件抗干扰。

扩展资料

  • AT89C51
      是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。

  • AT89S51
      是一个低功耗,高性能CMOS 8位单片机,片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元,功能强大的微型计算机的AT89S51可为许多嵌入式控制应用系统提供高性价比的解决方案。

霍尔集成电路分类

  霍尔效应是磁电效应的一种,这一现象是霍尔(A.H.Hall,1855—1938)于1879年在研究金属的导电机构时发现的。后来发现半导体、导电流体等也有这种效应,而半导体的霍尔效应比金属强得多,利用这现象制成的各种霍尔器件,广泛地应用于工业自动化技术、检 测技术及信息处理等方面。

  霍尔器件分为: 霍尔元件(Hall Element)和霍尔集成电路(Hall IC)两大类。前者是一个简单的霍尔片,使用时常常需要将获得的霍尔电压进行放大。后者将霍尔片和它的信号处理电路集成在同一个芯片上。霍尔集成电路是随着半导体集成电路工业的发展近20年才出现的产品,但因它体积小,重量轻,寿命长,安装方便,功耗小,频率高,耐震动,不怕灰尘、油污污染,成本低等优点,使其得到了极其广泛的应用。霍尔集成电路有很多其他称呼,如:霍尔效应集成电路(Hall Effect IC),霍尔效应传感集成电路(Hall Effect Sensor IC),霍尔传感器(Hall Sensor),霍尔电路,霍尔IC Hall有时也被翻译成霍耳,所以也可称霍耳集成电路等。以下简称霍尔IC。

  霍尔IC通常按输出信号类型分为数字霍尔IC线性霍尔IC。数字霍尔IC通过外部磁场的强弱控制输出导通或关断,类似开关的作用,因此常称为开关型霍尔IC。

  线性霍尔IC输出为模拟信号,输出电压与外部磁场的强弱通常成线性关系。

  开关型霍尔IC常又分为单极型霍尔IC(Unipolar)、锁存型霍尔IC(Latch)、双极型霍尔IC(Bipolar)、全极型霍尔IC(Omnipolar)四类。为便于说明,按通常约定,当外加磁场的南极(S极)接近霍尔IC打有标志的一面时,作用到霍尔IC上的磁场方向为正,当北极 (N极)接近标志面时,磁场为负。

  • 单极型霍尔IC
      经常被称为开关霍尔IC、霍尔开关(Hall Switch)、霍尔效应开关(Hall Effect Switch)。只对单个磁极(常为S极)有响应。如图1,大多数单极霍尔IC,当S极面向标记面,且施加的磁感应强度B超过工作点(BOP)时(即B>BOP>0),输出导通, 输出由高变低。当磁感应强度减弱低于释放点(BRP)(即0<B<BRP)或撤除(B=0)时,输出 关断, 输出由低变高。单极型霍尔IC在上电过程中如果外部磁场大于BOP,输出初始状态将 为导通。相反,如上电过程中外部磁场小于BOP,输出初始状态将为关断。上电状态可确定是单极型霍尔IC的一个重要特性。


图 1 单极型霍尔IC 输出特性图

  • 锁存型霍尔IC
      必须S极和N极交替作用于霍尔IC。如图2,大多数锁存型霍尔IC,当S极面向标记面,且施加的磁感应强度超过工作点(BOP)(即B>BOP>0)时,输出导通,输出由高变低。当磁感应强度减弱直至撤除(B=0),输出保持导通。当N极面向标记面,且施加的磁感应强度超过释放点(BRP)(即B<BRP<0)时,输出关断, 输出由低变高。锁存型霍尔IC上电过程中,如果外部磁场处于BOP和BRP之间,输出初始状态将不确定。


图 2 锁存型霍尔IC输出特性图

  • 全极霍尔IC
      是较新出现的类型,将S极和N极等同对待。一般情况下,如图3,任何一个磁极面向标记面,且施加的磁感应强度B超过工作点(BOP)(即|B|>BOP), 输出导通, 输出由高变低。当磁感应强度减弱低于释放点(BRP)(即|B|<BRP)或撤除(B=0)时,输出关断,输出由低变高。也有部分与以上输出状态相反的全极霍尔IC。全极霍尔IC这一类似干簧管的特性,在许多用于替换干簧管以提高可靠性。


图 3 全极型霍尔IC 输出特性图

  • 双极型霍尔IC
      是比较早期的一种类型,最初因半导体工艺限制,生产出较的霍尔IC灵敏度分布范围很大,一致性差。同一型号霍尔,如图4,部分是锁存型的(中间曲线),部分是单极型的(右边曲线),部分是N极单极型的(右边曲线),是三种的混合体。往往指标只给出最大BOP(>0)和最小BRP(<0),任何一颗双极型霍尔IC,不能确定是单极型霍尔IC、锁存型霍尔IC或负单极霍尔IC。目前,新型号中很少再有双极型霍尔IC。注意,很多用户会把双极型霍尔IC误认为(或称为)是锁存型霍尔IC,也有误认为(或称为)是全极型霍尔IC。


图4 双极型霍尔IC输出特性图

  • 线性霍尔 IC
      输出为模拟信号,输出电平在一定的范围类与外加磁场成线性关系,称为线性磁场范围。外加磁场超出线性磁场范围,将不再成线性关系,直至输出饱和,有最低输出饱和电压和最高输出饱和电压。

  以上是简单常用的霍尔IC,除了这些,近几年还出现了一些集成度高、功能复杂的专用霍尔IC,如差分霍尔IC(双霍尔IC),集成ADC、DAC 和信号处理电路的旋转位置传感器、三轴位置传感器,集成了电机控制和驱动电路的无刷电机驱动芯片。此外,利用霍尔原理设计的电流传感器IC也是霍尔IC的一大类别。

  随着手机、笔记本电脑、DV等便携式设备的普及,对霍尔IC的功耗提出要求,由此产生了一类新的霍尔IC:微功耗霍尔IC。它是数字霍尔 IC 按功耗单独分出的一类,其内部采用休眠机制降低功耗,平均功耗可以达到uA极。它也可按功能分为单极型霍尔IC、锁存型霍尔IC、和全极霍尔IC三类。这类一般用于电池长期供电的系统。

三极管Ie=Ic+Ib和Ic=βIb

  是不是三极管不管连成共射、共基或共集放大电路,它们都能满足Ie=Ic+Ib和Ic=βIb这两个公式?
  备注补充:他们三种接法的前提条件都满足:发射结正偏,集电结反偏,并工作放大区,动态或静态时它们都能满足Ie=Ic+Ib和Ic=βIb这两个公式?​

  Ie=Ic+Ib是永远满足的,但是Ic=βIb则只有在三极管处于放大区域内才能满足,当三极管进入饱和状态时是不满足Ic=βIb的.这和是否处于静态、是否为共发射极电路都没有关系.即使是共基极电路,只要三极管没有进入饱和状态,基极电流与集电极电流的关系仍然是相差β倍.所谓共基极电路不能放大电流是因为输入输出电流是集电极和发射极电流,两者大致相等,但是集电极电流和基极电流之间仍然是成β倍的比例关系的.

  8050控制管,同时为8550驱动提供电流通路,使Ir23控制8550的Iec,从而增大驱动能力。

邮票孔拼版规则

    1. 拼板与板间距1.2MM或者1.6MM 等
    1. 邮票孔:8个0.55MM的孔,孔间距0.2MM
    1. 加两排,邮票孔伸到板内1/3 ,如板边有线需避开
    1. 加完邮票孔,孔两边的外形连起来,方便后工续锣带制作

  拼版后的局部图:(中间用连接桥的方式,此方式能最少程度上减少残留)

晶振选型

恒温晶振(OCXO)
  内部晶体工作在恒温槽提供的恒定温度下,因此具有更好的温度特性。

温补晶振(TCXO)
  通过内置温度补偿电路来补偿温度变化对晶体谐振器输出频率的影响,实现工作温度范围内较高的温度稳定特性。

微机补偿晶振(MCXO)
  属于特殊的TCXO,利用微处理器的高速处理能力,为晶振提供精确有效的补偿,提高晶振的温度稳定度。

压控晶振(VCXO)
  VCXO是一种在晶体谐振器串联插入变容二极管,根据外部加入的电压使二极管的电容容量发生变化,来达到输出频率变化的晶体振荡器。

晶体振荡器 (OSC)
  晶体振荡器是将晶体谐振器和起振电路直接集成在一起的有源器件。主要分为单端晶体振荡器和差分晶体振荡器。

晶体谐振器(Crystals)
  石英谐振器指的是利用电信号频率等于石英晶片固有频率时晶片因压电效应而产生谐振现象的原理制成的被动 器件,是晶体振荡器和窄带滤波器等的关键元件。

继电器防护

  • 1、直流继电器,需在线圈两端并联二极管,
      这是因为当继电器断电(释放)时,继电器的线圈会产生自感电动势,这个电压会击穿和它相连的三极管,所以常常在继电器两端连一个二极管(通常称呼它叫:吸收二极管)将这个自感电动势短路、吸收掉。不用二极管,那就要连一个适当大小的电容也可以。
  • 2、对于交流来说,需在触点(电源在高频分析时短路)两端并联RC吸合回路,RC吸合回路由电容和电阻串联组成。电阻经验值:10-100欧姆,电容经验值:0.1uF/250V或者0.22-0.47uF
      这个触点两端的RC作用不一样,它是为了减小触电工作是的电火花用的,所以也称吸收回路,火花不仅对触电寿命有影响,同时它也是一个干扰源,所以同时这样做也是为了防干扰。
  • 3、在交流继电器出放至RC的话,不是有句话说,通交隔直吗?在交流继电器线圈上并联一个C,不就是通直,从RC那条之路通过了吗?
      这个问题你就不要困扰着,首先,电容并不是真正地通过交流电,另外对于电容你也要看是多大容量,不就是0.22-0.47uF,你可用公式计算一下,对于50HZ交流电它的容抗是很大的,不会成为通路的。

32.768KHz晶振的好处

  32.768khz比较容易分频以便于产生1秒的时钟频率,因为32768等于2的15次方。

立创工艺设计时注意事项

https://www.jlc.com/portal/vtechnology.html

(min,设计时大于此值)
  • 各种间距:5mil
  • 线宽:5mil
  • 孔:0.2/0.4-6.3mm(8/16mil-25mil)
  • 字符:6/40mil
  • 到板边:0.3mm(12mil)
  • 阻焊桥:绿油3mil杂色4mil
  • 有距拼版间距:2mm(80mil)
  • 工艺边:3mm(120mil)
  • 板子尺寸max:38x38mm(1520mil)

安装SolidWorks后更改默认SCH打卡方式

  \HKEY_CLASSES_ROOT\
  AltiumSchematicLibrary
  AltiumSchematicDocument
  AltiumPCBProject
  AltiumPCBLibrary

  command删掉,默认改为"D:\Altium Designer Summer 09\Dxp.exe" "%1"

  在AD安装目录右键管理员打开dxp.exe,Preferences中的FileTypes恢复默认OK,遇到图标及文件类型不对的再到注册表\HKEY_CLASSES_ROOT\找到对应后缀如.schdoc直接删除,然后重复AD FileTypes步骤。

深度解读EInk_电子墨水屏技术

EInk技术的起源

  电子墨水屏技术最早可以追溯到 1996 年,它基于美国麻省理工学院媒体实验室(MIT Media Lab)的一项研究,利用电泳技术(EPD)实现显示,这类屏幕的显示效果十分接近传统纸张,因此也被成为“电子纸”。1997 年,麻省理工学院的教授 Joseph Jacobson 创立 E Ink 公司,开始推动电子纸技术走向商业化,电子墨水技术成为电子纸的主流。

  电子墨水与印刷使用的墨水很相似,都是用颜料所制,这也是为什么我们看到电子墨水屏和传统纸张显示效果相似的原因。电子墨水通常会制成薄膜,由大量微囊组成,这些微囊只有人类头发的直径大小。微囊中的黑白小球是带不同电荷的色素颗粒,初始状态下,色素颗粒悬浮在微囊中,当施加一定方向的电场后,相应的色素颗粒被推到顶部,微囊就会显示不同的颜色,而不同颜色的微囊组成了各种文字和图案。

  电子墨水屏基本结构如下图所示:


1.上层;2.透明电极层;3.透明微胶囊;4.带正电荷的白色颜料;5.带负电荷的黑色颜料;6.透明液体(油);7.电极像素层;8.基板;9.光线;10.白色;11.黑色。

  电子墨水屏是由许多电子墨水组成,电子墨水可以看成一个个胶囊的样子(如上图所示)。每一个胶囊(位置6)里面有液体电荷,其中正电荷染白色,负电荷染黑色。当在一侧(位置8)给予正负电压,带有电荷的液体就会被分别吸引和排斥。这样,每一个像素点就可以显示白色或者黑色了(注:彩色电子墨水的电子书并不是不能做,只是成本和技术还没符合市场要求)。

  因为电子墨水的刷新是不连续的,每一次刷新完成就可以保持现在的图形,即使拔掉电池也依旧保存。可能会有人问到,拔了电池吸引电子墨水的电压就木有了,那么小球不就回复原状或者进入随机的混沌状态了吗?答案是因为电子墨水具有双稳态效应(磁滞效应)。

  上图中,横轴是电子书提供的电压大小,纵轴灰度(假定正为最白,负为最黑)。电压加大的过程和减小的过程,给予同样的电压,电子墨水黑白程度是不同的。这样的效应就叫做双稳态效应(磁滞效应)。利用这样的效应,我们就可以给一个正电压(从0到B点过程,走下面上升的路线),吸引负电荷,显示正电荷白色给读者,然后断电(从B减少到0,走上面那条回来的路线)。白色得以保持。于是,电子墨水的电子书省电就在于如果不需要显示有所变化,屏幕部分消耗电量为0。

  注1:不变化屏幕电子书自己没电是由于电路板的待机消耗以及电池自己的内阻消耗;

  注2:其他常见显示器无论屏幕内容是否变化,屏幕部分的耗电量都是持续的,变化不大。

  为什么每一次变化(如:翻页),或者每隔一段时间就需要有一个全部清场的动作呢?我们刚假设电压从0加大然后再减少到0,但是电子墨水的灰度从位置A变到了位置C。那么如果下一次变化,如果我减少电压,也就是顺着上面那条返回路径继续行走,就没有问题。但是如果下一次刷新,我还需要这个像素显示白色,那么这个在C点情况的墨水所遵循的路线就不是这个图形了。电路所驱动的电压对应的灰度将会不准确。导致的结果就是黑色的墨水黑色程度不相同,白色的墨水有的没有完全白下去。就会出现我们所说的鬼影,或者残影。于是,为了避免残影的出现,就全部加到最大或者最小电压,把所有的墨水清零,从初始状态从新开始调整,这样所有的墨水小球就可以保持只有两种颜色的均匀显示了。

电子墨水屏的工作原理

  “电子墨水的主要由大量细小微胶囊﹙microcapsules﹚组成,这些微胶囊约为人类头发直径大小。每个微胶囊中包含悬浮于澄清液体之中的带正电荷的白粒子和带负电荷的黑粒子。设置电场为正时,白粒子向微胶囊顶部移动,因而呈现白色。同时,黑粒子被拉到微胶囊底部,从而隐藏。如施加相反的电场,黑粒子在胶囊顶部出现,因而呈现黑色。”

  对肉眼看来电子墨水像一瓶普通墨水,但悬浮在电子墨水液体中有几百万个细小的微胶囊。每个胶囊内部是染料和颜料芯片的混合物,这些细小的芯片可以受电荷作用。为了能看见电子墨水的微胶囊,可以把它想象成清晰的塑料水球。水球内包含几十个乒乓球,水球内充入的不是空气而是颜料水。如果从顶部看水球,我们可以看到许多白色乒乓球悬浮在液体中,于是水球看起来呈白色。从底部看水球,你只不过看到的是颜料水,于是水球看起来呈黑色。如果你把几千个水球放到一个容器,并使这些乒乓球在水球的顶和底之间运动,你就能看到容器在改变颜色。这就是电子墨水工作的基本原理。事实上这些水球是100 微米宽的微胶囊。在1平方英寸,大约包含10万个微胶囊。如果在一页纸上打印电子墨水,则一个句子包含30多个微胶囊。

  电子墨水是融合化学,物理和电子学的整体产生的一种新材料。制造微胶囊本身仅涉及较简单的化学,可以比作做沙拉菜!微胶囊制成后被称为是一种胶质材料。这材料是细小的固态颗粒,承担液态的物理性质。于是微胶囊象传统墨水悬浮在液态“载媒体”,然而它将粘着到普通墨水可以用的任何表面。并且可以用现有的丝网印刷工艺打印。打印的微电子学技术改变了墨水颗粒的颜色并产生了字和图。

电子墨水屏的特点

  • 1、电子墨水屏有两个优点:省电、护眼。

  电子墨水屏可以在没有电源的情况下持续显示画面,只有画面变化时才需要消耗少量电源,比如 Kindle 在关机状态下也可以显示屏保,只有在翻页时,屏幕才会刷新。这种特性极大地将降低了电源消耗,也是电子书续航长的原因。

  传统的 LCD 屏显示原理是利用背光发射,光线需要一直穿过显示屏,直射眼睛。而电子墨水屏无需背光,它是利用环境光打在显示屏上,再折射到眼睛。这种方式模拟了墨水和纸张的特性,环境光越强,显示效果越清晰。由于没有了闪烁,在长时间阅读时眼睛不容易感到疲劳。

  电子墨水屏省电、护眼的特点让其成为电子书阅读器的首选,索尼和亚马逊相继推出配备电子墨水屏的阅读器。现在距离第一代 Kindle 发布已经过去了 10 年,电子墨水屏也已经有 20 年历史,从诞生起不少人就对其抱有厚望,认为电子书会革了纸质书的命,但直到今天,电子书从未成为市场主流,电子墨水屏似乎也很少出现明显的变化,技术好像一直没有更大的进步。

  • 2、刷新率低,不适用于主流设备

  电子墨水屏没有获得更多的市场份额,主要是受本身特性限制,其中最大的局限之一就是刷新率低。

  相比主流的 LCD 显示屏,电子墨水屏无需不断刷新就可以显示内容,这降低了耗电,也减少了辐射,让阅读体验更接近纸张,不容易造成眼睛疲劳。但这样的特性也让电子墨水屏无法被主流电子设备采用。

  不管是手机还是电脑,屏幕需要显示的内容都很丰富,同时还要进行弹出菜单、窗口滚动等操作,电子墨水屏极底的刷新率显然无法满足这样的要求。和 LCD 显示屏相比,电子墨水屏更适用于内容简单、变化较少的文字显示。

  从诞生起就有的省电、护眼特性,让电子墨水屏成为电子书阅读器的标配,但也引来应用性单一的质疑。

EInk墨水屏与LCD液晶屏的主要区别

  • 原理不同

  EInk是基于电泳技术的显示技术。带黑白两种颜色的带点粒子在液态胶囊中在电场的作用下,上下浮动而形成画面的过程。在形成画面后,颜色粒子就停止运动,即使断电画面也不会消失。因此,在翻到某一页时,屏幕是不会闪烁。

  LCD液晶屏的工作原理简单描述就是通过电压将每个固定好的独立像素中的液晶分子进行方位调整,达到显示不同颜色与画面的效果。由于液晶分子的是依靠电压维持状态,因此需要持续供电来维持显示。因此,TFT始终处于闪烁状态下,只是频率高肉眼分辨不出来而已。

  • 显示机制不同

  EInk是全反射式,也就是随着环境光的变化显示效果会不同。外界光源越好,显示效果越好。因此在晴朗的户外看EInk电子书与看纸质书的体验几乎一样。

  由于Eink依赖环境光,当夜晚时环境光效果不佳,因此目前行业中通过增加导光板来解决夜晚阅读体验的问题。

  LCD液晶屏有背光,所以基本上受外接影响不大,除非极端情况(夏天户外太阳光下)。因此在会有在户外,手机屏幕亮度需要调亮来抵御环境光对屏幕显示的遮盖效果。

  • 残影问题

  由于EInk原理中,黑白粒子的固定状态特性,在阅读翻页时容易看到上页黑色粒子残留的印记,行业中俗称“残影”,因此屏幕商提供了一种恢复初始状态的刷新方式,也就是大家常见到的“闪屏”问题。类似阅读纸质书籍中的翻书的过程。

  由于LCD液晶屏本身一致在刷新,因此不会有类似过程。

  • 节能功耗

  由于EInk的特性,在阅读过程中不需要耗电,只在翻页一瞬间消耗极少电量,因此电子书产品一般的使用周期都在2周甚至一个月左右。

  由于LCD液晶屏始终需要电压来维持画面,基本上屏幕占了主要的电量消耗。目前基本上智能手机的使用是一天一充或一天多充。

  • 结论

  因此,无论从原理还是实际使用感受上,EInk在阅读文字与非彩色漫画类内容时,有着无可比拟的阅读优势:

  • 1、高度接近纸张的阅读体验。
  • 2、不伤眼睛,适合长时间阅读。
  • 3、电池使用寿命长,接近一个月。

  但也有一些自身劣势:

  • 1、目前主要只有黑白产品,彩色只有三色(黑白红)。
  • 2、受限于其原理性的问题,无法像TFT屏幕能快速响应一些动画类需求。
  • 3、刷新过程中会闪屏。

EInk技术应用

  从诞生起就有的省电、护眼特性,让电子墨水屏成为电子书阅读器的标配,但也引来应用性单一的质疑,除了 Kindle,电子墨水屏好像并没有其他更合适的应用。

  E Ink 官方在微博中不断强调“不止 Kindle”,似乎也证明了这种焦虑。这些年来,电子墨水屏也开始在其他设备中出现,比如手机。

  在 2014 年 APEC 峰会期间,俄罗斯总统普京将一台 YotaPhone 2 作为国礼,这台手机也因此受到很多的关注。YotaPhone 最大的特点就是其背部搭载的电子墨水屏,独特的双面屏设计和「国礼」光环让它成为当年最“亮眼”的手机之一。近期,Yota 顺势推出第三代手机 YOTA3,它配备了一块 E Ink 电子墨水屏,可以在阅读文字时起到省电、护眼的效果,这块屏幕还能独立运行一些 App。

  屏幕是手机的耗电大户,Kindle 与纸质书相近的阅读体验也早就让很多用户眼馋,YotaPhone 的出现让不少人看到新的商机,开始尝试将电子墨水屏与手机结合。趁着 YotaPhone 的热度,华为 P8 在发布时同步推出一款电子墨水屏手机壳。国外也出现了专做电子墨水屏手机壳配件的 InkCase。

  不过电子墨水屏与手机的结合更像是在丰富市场话题,远远谈不上技术创新。电子墨水屏只是作为补充,手机屏幕还是以实用性为主。

  相比之下,电子墨水屏在手表上的尝试更像是一场革新。手表的显示屏小,成本可控,同时屏幕需要展示的内容少,符合电子墨水屏的定位。在这一领域最亮眼的是 FES Watch。索尼在的 20 周年庆典上宣布,整体用柔性 E-ink 屏制成的 FES Watch 将在中国限量发售。它的表盘和表带都由一整块柔性 E Ink 屏幕制成,没有断点又非常有设计感。由于只能显示黑白两色,它只有显示时间一个功能。由于 E Ink 屏幕的特殊性,FES Watch 的待机时间理论上可以达到 2 年。

  这些应用虽然跳出了电子书阅读器的限制,但仍然是对电子墨水屏原有特性的应用。实际上,电子墨水屏也一直在尝试新的技术,以突破本身的局限。

EInk技术的未来:取代纸、取代印刷

  在刚过去的 2017 年智慧显示与触控展览会上,E Ink 展出了彩色电子纸 ACeP。传统的电子墨水屏只能显示黑白两色,而彩色电子纸则是将传统的电泳式微囊技术延伸。黑白颗粒通过电场变化,呈现出灰阶与黑白画面,在此基础上覆盖彩色滤光片,将黑白粒子转换成 RGB 彩色粒子,就可以呈现彩色画面。E Ink 的彩色电子纸显示屏除了提供 16 灰阶的黑白显示效果外,还提供 4096 种色彩。

  除了突破颜色限制的彩色电子纸,E Ink 还展示了 84 英寸拼接电子纸展示板、可折叠电子纸、具备手写功能的电子纸笔记本等技术应用。

  不管是彩色电子纸还是可折叠电子纸,E Ink 所做的尝试都是在努力跳出传统电子墨水屏的局限,但从一些实际应用中我们也可以看到,电子墨水屏的使命并不是取代普通显示屏,主流电子设备不是它的主战场。关于电子墨水屏未来的应用,应该是在那些需要改变传统显示方式的地方,比如三色电子纸显示屏替代零售商店的商品标签,可以动态改变显示内容,帮助零售商及时改进营销策略。这些以前用传统纸张显示,现在需要灵活显示更多内容的领域,才是电子墨水屏未来的发展方向。

  Kindle 已经诞生 10 年,电子墨水屏也出现了 20 年之久,对于一项已经足够「成熟」的技术来说,使命不再是寻找更多的应用场景,而是利用技术创新来创造更多需求。

原文标题:深度解读E-link——电子墨水屏技术
文章出处:【微信号:WW_CGQJS,微信公众号:传感器技术】欢迎添加关注!文章转载请注明出处。

防反接电路解析(2021-09-25)

  • 1、通常情况下直流电源输入防反接保护是利用二极管的单向导电性来实现放反接保护。如下图所示:

  这种解法简单可靠适合小电流电路。当输入电流比较大的时候,此电路消耗功耗严重,例如:输入2A的电流,二极管的压降为0.7V,则消耗的功率为Pd=2A * 0.7V=1.4W,这样效率低,发热量大,需要加散热器。

  • 2、用二极管整流桥对输入做整流:那样虽然输入部分正负,但是大电流时,消耗的功耗是上图的2倍,2.8W。下图所示:

  • 3、MOS管型防反接保护电路

  利用MOS管的开关特性,控制电路的导通和断开来设计防反接保护电路,由于功率MOS管的内阻很小,现在MOSFET Rds(on)已经能够做到毫欧级,解决了现有采用二极管防反接方案存在的压降和功耗过大的问题。

  极性反接保护将保护场效应管与被保护电路串联连接。保护用场效应管与PMOS场效应管或NMOS场效应管。一旦被保护电路的电源极性反接,保护用场效应管会形成断路,防止电流烧毁电路中的场效应管元件,保护整体电路。

  N沟道MOS管通过S管脚和D管脚串接与电源和负载之间,R1为MOS管提供偏置电压,利用MOS管的开关特性控制电路的导通和断开,从而防止电源反接给负载带来损坏。正接时候,R1挺高VGS电压,MOS饱和导通。反接的时候,MOS不能导通,所以起到防反接作用。功率MOS管的Rds(on)只有20毫欧实际损耗很小,2A的电流,功耗为0.08W根本不用外加散热片。解决了现有采用二极管电源防反接方案存在的压降和功耗过大的问题。




  VZ1为稳压管防止栅极电压过高击穿MOS管。NMOS的导通电阻比PMOS的小,最好选择NMOS。

版权声明:本文为CSDN博主「画质饺子」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/enfang1120/article/details/86372419

纽扣电池容量(2021-09-25)

  纽扣电池(Button Cell)也称扣式电池,是指外形尺寸象一颗小纽扣的电池,一般来说直径较大,厚度较薄(相对于柱状电池如市场上的5号AA等电池).纽扣电池是从外形上来对电池来分,同等对应的电池分类有柱状电池,方形电池,异形电池。

  从电池的背面可以看到相应的标记,代表了不同各类的纽扣电池。

  LR---碱性--1.5V
  SR---氧化银--1.55V
  CR---锂电--3V
  ZA---锌空--1.4V
  LIR---二次锂电--3.7V

  比较常见的纽扣电池有用于玩具和礼品上的AG3、AG10、AG13电池,电脑主机板上的电池,型号为CR2032用于电子词典里面的CR2025,用于电子表上面的CR2016等;

  纽扣电池的型号名称前面的英文字母表示电池的种类,对于锂锰电池来说前两位数字为直径(单位 mm),后两位数字为厚度(单位 0.1 mm),取两者的接近数字。例如 CR2032 的大略尺寸为直径 20 mm,厚度 3.2 mm。

  常见纽扣电池标称容量,通常在40mAh-150mAh之间。

以下是常见纽扣电池的容量等信息。

干电池及充电电池容量(2021-09-25)

  AA电池(5号电池):干电池容量500~2000毫安时,电流1~2安培(新电池)。充电电池容量1000~4500毫安时,电流2.5~5安培(新电池充满电)

  AAA电池(7号电池):干电池容量500~1300毫安时,电流0.9~1.7安培(新电池)。充电电池容量600~3700毫安时,电流2.5~4.8安培(新电池充满电)


  • 5号电池划分为一次电池和二次电池,因此,5号电池容量可分为可充5号电池容量与不可充5号电池容量。

  不可充5号电池又分为碳性和碱性电池,通常,不可充5号电池容量的计算方法为:以3.9Ω恒阻放电由工作电压(1.5V)下降到终止电压(0.9V)时的时间长度。

  5号碳性电池容量:目前,市面上的5号碳性电池通常都是高功率的P型电池,5号碳性电池容量一般在放电55分钟以上,但因不同的厂家设计而有所不同,东莞钜大一款开路电压为1.65V的碳性电池可以放电90分钟,是业内容量比较高容量的5号碳性电池。

  5号碱性电池容量:一般情况下,3.9Ω放电可达6个小时以上,因为碱性电池可以用大电流放电,因此,也可以用恒流放电测定其容量。通常,小电流放电下,5号碱性电池容量大约在1800~2000mAh之间。

  可充电5号电池有镍镉电池和镍氢电池,充电电池容量单位一般为mAh,偶尔会采用Ah单位,在数值上等于放电电流与放电时间的乘积。

  5号镍镉电池容量:因环保法规的限制,镍镉电池正在逐渐退出市场,但在某些要求低价的场合镍镉电池还有一定的市场,5号镍镉电池容量一般为500~700mAh,其中GP、日立、松下的5号镍镉电池容量可以做的高一些。

  5号镍氢电池容量: 一般都可以做到1200~1300mAh,是5号镍镉电池容量的两倍,由于镍氢电池比镍镉电池有许多工作优势,而且又被开发出新的用途,因此得以广泛采用, 5号镍氢电池容量做的大而稳的有GP、日系企业、国内有科力远、东莞钜大、深圳倍特力等名企。但名牌镍氢电池被仿冒的现象也很普遍。

  锂离子电池中有一款14500锂电池,因其外形尺寸与其5号电池接近,故而也被冠以5号锂电池之名,这种5号电池容量可以设计成500~900mAh,但其充放电寿命却远超5号镍氢电池。

  • 7号电池从性质上分,包括一次7号电池和二次7号电池,7号电池容量也因此被分为一次7号电池容量和二次7号电池容量

  可做成7号外形的一次电池分为碳性电池和碱性电池,通常,它们的放电容量是指从标称电压(1.5V)放电到终止电压(0.9V)的时间长度,丈量方法为恒阻放电,人们常说的电池放电几分钟,指的是在3.9Ω放电制度下的容量。

  7号碳性电池容量:按照IEC标准,碳性电池可以14.8v 2200mah分为三种类型:P型(高功率电池)、C型(高容量电池)和第一代的S型糊式电池。

  S型电池曾经被淘汰,在它的基础上展开出了C型纸板电池,后者用30~70%的高活性锰替代了自然锰,而且正极填充量进步了30%,所以,容量得以进步,C型电池多用于小电流放电场所,如钟表、遥控器、收音机、手电筒等。P型电池正极全部采用高活性锰,性能大大提升,可用于大电流放电,如相机、闪光灯,不过,由于碱性电池的市场占有率起来越大,所以,P型电池往常也主要是用于18650 2600mah锂电池原C型号电池的市场而C型电池基本退出市场。

  7号碳性电池容量由于电池消费厂家配方的不同而有差别,在3.9Ω放电制度下,普通在25~35分钟之间,东莞钜大有一款环保碳性电池,其标称放电时间35分钟,理论放电接近40分钟,这是比较高容量的7号碳性电池。

  7号碱性电池容量:在3.9Ω放电方式下,7号碱性电池容量普通可以抵达7号碳性电池容量的4~5倍,在数值表现上,为放电时间的延长,东莞钜大该型号电池放电时间为2.6小时。同时,碱性电池的结构特性更耐受大电流放电,因而,该款电池用500mAh电流放电时间约为55分钟,假定改用小电流放电,则这款7号电池容量大约在800~1200mAh之间。

  可做成7号外形的二次电池有镍镉电池和镍氢电池,二次电池的容量单位为mAh,或者Ah,表示在某一个放电电流下的耐用时间。

  7号镍镉电池容量:其标称电压为了1.2V,终止电压用8小时率放电为1.1V,10ah电池在这一条件下,镍镉电池的设计容量在500mAh以内,但镉污染环境,而且在充放电一定次数后电量会降落到80%,寿命比同类型镍氢少,因此,正被镍氢电池全面取代而退出市场。

  7号镍氢电池容量:镍氢电池的标称电压为1.2V,终止电压为1.0V,主流7号镍氢电池容量可以抵达650~800mAh。

  由于镍氢电池占领了镍镉电池的原有市场,而又有自己的新市场故而成为市场新宠,难免呈现一些非理性行为,7号电池容量虚标现象就是其一。目前,国内做到800mAh曾经相当不错了,假定遇到标注1000mAh以上的有可能就是虚标了。由于7号镍氢电池容量最终是由其材质所决议的。

晶体振荡器(2018-06-17)

  晶体振荡器是指从一块石英晶体上按一定方位角切下薄片(简称为晶片),而在封装内部添加IC组成振荡电路的晶体元件称为晶体振荡器。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。

工作原理

  石英晶体振荡器是高精度和高稳定度的振荡器,被广泛应用于彩电、计算机、遥控器等各类振荡电路中,以及通信系统中用于频率发生器、为数据处理设备产生时钟信号和为特定系统提供基准信号。

  石英晶体振荡器是利用石英晶体(二氧化硅的结晶体)的压电效应制成的一种谐振器件,它的基本构成大致是:从一块石英晶体上按一定方位角切下薄片(简称为晶片,它可以是正方形、矩形或圆形等),在它的两个对应面上涂敷银层作为电极,在每个电极上各焊一根引线接到管脚上,再加上封装外壳就构成了石英晶体谐振器,简称为石英晶体或晶体、晶振。其产品一般用金属外壳封装,也有用玻璃壳、陶瓷或塑料封装的。

  若在石英晶体的两个电极上加一电场,晶片就会产生机械变形。反之,若在晶片的两侧施加机械压力,则在晶片相应的方向上将产生电场,这种物理现象称为压电效应。如果在晶片的两极上加交变电压,晶片就会产生机械振动,同时晶片的机械振动又会产生交变电场。在一般情况下,晶片机械振动的振幅和交变电场的振幅非常微小,但当外加交变电压的频率为某一特定值时,振幅明显加大,比其他频率下的振幅大得多,这种现象称为压电谐振,它与LC回路的谐振现象十分相似。它的谐振频率与晶片的切割方式、几何形状、尺寸等有关。

  当晶体不振动时,可把它看成一个平板电容器称为静电电容C,它的大小与晶片的几何尺寸、电极面积有关,一般约几个PF到几十PF。当晶体振荡时,机械振动的惯性可用电感L来等效。一般L的值为几十mH到几百mH。晶片的弹性可用电容C来等效,C的值很小,一般只有0.0002~0.1pF。晶片振动时因摩擦而造成的损耗用R来等效,它的数值约为100Ω。由于晶片的等效电感很大,而C很小,R也小,因此回路的品质因数Q很大,可达1000~10000。加上晶片本身的谐振频率基本上只与晶片的切割方式、几何形状、尺寸有关,而且可以做得精确,因此利用石英谐振器组成的振荡电路可获得很高的频率稳定度。

  计算机都有个计时电路,尽管一般使用“时钟”这个词来表示这些设备,但它们实际上并不是通常意义的时钟,把它们称为计时器(timer)可能更恰当一点。计算机的计时器通常是一个精密加工过的石英晶体,石英晶体在其张力限度内以一定的频率振荡,这种频率取决于晶体本身如何切割及其受到张力的大小。有两个寄存器与每个石英晶体相关联,一个计数器(counter)和一个保持寄存器(holdingregister)。石英晶体的每次振荡使计数器减1。当计数器减为0时,产生一个中断,计数器从保持寄存器中重新装入初始值。这种方法使得对一个计时器进行编程,令其每秒产生60次中断(或者以任何其它希望的频率产生中断)成为可能。每次中断称为一个时钟嘀嗒(clocktick)。

  晶振在电气上可以等效成一个电容和一个电阻并联再串联一个电容的二端网络,电工学上这个网络有两个谐振点,以频率的高低分其中较低的频率为串联谐振,较高的频率为并联谐振。由于晶体自身的特性致使这两个频率的距离相当的接近,在这个极窄的频率范围内,晶振等效为一个电感,所以只要晶振的两端并联上合适的电容它就会组成并联谐振电路。这个并联谐振电路加到一个负反馈电路中就可以构成正弦波振荡电路,由于晶振等效为电感的频率范围很窄,所以即使其他元件的参数变化很大,这个振荡器的频率也不会有很大的变化。晶振有一个重要的参数,那就是负载电容值,选择与负载电容值相等的并联电容,就可以得到晶振标称的谐振频率。一般的晶振振荡电路都是在一个反相放大器(注意是放大器不是反相器)的两端接入晶振,再有两个电容分别接到晶振的两端,每个电容的另一端再接到地,这两个电容串联的容量值就应该等于负载电容,请注意一般IC的引脚都有等效输入电容,这个不能忽略。一般的晶振的负载电容为15p或12.5p,如果再考虑元件引脚的等效输入电容,则两个22p的电容构成晶振的振荡电路就是比较好的选择。

功能作用

  晶振在应用具体起到的作用,微控制器的时钟源可以分为两类:基于机械谐振器件的时钟源,如晶振、陶瓷谐振槽路;RC(电阻、电容)振荡器。一种是皮尔斯振荡器配置,适用于晶振和陶瓷谐振槽路。另一种为简单的分立RC振荡器。基于晶振与陶瓷谐振槽路的振荡器通常能提供非常高的初始精度和较低的温度系数。RC振荡器能够快速启动,成本也比较低,但通常在整个温度和工作电源电压范围内精度较差,会在标称输出频率的5%至50%范围内变化。但其性能受环境条件和电路元件选择的影响。需认真对待振荡器电路的元件选择和线路板布局。在使用时,陶瓷谐振槽路和相应的负载电容必须根据特定的逻辑系列进行优化。具有高Q值的晶振对放大器的选择并不敏感,但在过驱动时很容易产生频率漂移(甚至可能损坏)。影响振荡器工作的环境因素有:电磁干扰(EMI)、机械震动与冲击、湿度和温度。这些因素会增大输出频率的变化,增加不稳定性,并且在有些情况下,还会造成振荡器停振。上述大部分问题都可以通过使用振荡器模块避免。这些模块自带振荡器、提供低阻方波输出,并且能够在一定条件下保证运行。最常用的两种类型是晶振模块和集成RC振荡器(硅振荡器)。晶振模块提供与分立晶振相同的精度。硅振荡器的精度要比分立RC振荡器高,多数情况下能够提供与陶瓷谐振槽路相当的精度。

  选择振荡器时还需要考虑功耗。分立振荡器的功耗主要由反馈放大器的电源电流以及电路内部的电容值所决定。CMOS放大器功耗与工作频率成正比,可以表示为功率耗散电容值。比如,HC04反相器门电路的功率耗散电容值是90pF。在4MHz、5V电源下工作时,相当于1.8mA的电源电流。再加上20pF的晶振负载电容,整个电源电流为2.2mA。陶瓷谐振槽路一般具有较大的负载电容,相应地也需要更多的电流。相比之下,晶振模块一般需要电源电流为10mA~60mA。硅振荡器的电源电流取决于其类型与功能,范围可以从低频(固定)器件的几个微安到可编程器件的几个毫安。一种低功率的硅振荡器,如MAX7375,工作在4MHz时只需不到2mA的电流。在特定的应用场合优化时钟源需要综合考虑以下一些因素:精度、成本、功耗以及环境需求。

基本分类

  石英晶体振荡器分 非温度补偿式晶体振荡器、温度补偿晶体振荡器(TCXO)、电压控制晶体振荡器(VCXO)、恒温控制式晶体振荡器(OCXO)和数字化/μp补偿式晶体振荡器(DCXO/MCXO)等几种类型。其中,无温度补偿式晶体振荡器是最简单的一种,在日本工业标准(JIS)中 ,称其为标准封装晶体振荡器(SPXO)。

中断方式与轮询方式(2018-03-20)

中断方式
  程序中断通常简称中断,是指CPU在正常运行程序的过程中,由于预选安排或发生了各种随机的内部或外部事件,使CPU中断正在运行的程序,而转到为相应的服务程序去处理,这个过程称为程序中断。

轮询方式
  轮询(Polling)I/O方式,也称作程序控制I/O方式,是让CPU以一定的周期按次序查询每一个外设,看它是否有数据输入或输出的要求,若有,则进行相应的输入/输出服务;若无,或I/O处理完毕后,CPU就接着查询下一个外设。

•所需硬件:外设接口提供状态端口、数据端口
•软件机制:应用程序必须定时查询各个接口的状态端口,判断是否需要输入、输出数据,如果需要,则通过数据端口进行数据操作。
•特点:CPU通过执行指令主动对外部设备进行查询,外部设备处于被动地位 。

摘自 DHclly 博客

砂纸分类和型号(2018-03-20)

分类
在实际使用中,砂纸的分类很不统一。

海绵砂纸
  适合打磨圆滑部分,各种材料均可。海绵砂纸砂磨工艺具有生产效率高、被加工表面质量好、生产成本低等特点,因此在家具生产中得到广泛的应用, 家具产品的最终表面质量与砂磨工艺有着密切的关系。 海绵砂纸是砂磨工艺的主要工具。

干磨砂纸
  干磨砂纸以合成树脂为粘结剂将碳化硅磨料粘接在乳胶之上,并涂以抗静电的涂层制成高档产品,具有防堵塞、防静电、柔软性好,耐磨度高等优点。

  多种细度可供选择,适于打磨金属表面,腻子和涂层。干磨砂纸一般选用特制牛皮纸和乳胶纸,选用天然和合成树脂作粘结剂,经过先进的高静电植砂工艺制造而成,此产品磨削效率高,不易粘屑等特点,适用于干磨。广泛应用于家具、装修等行业,特别是粗磨。

水磨砂纸
  又称耐水砂纸或水砂纸,是因为在使用时可以浸水打磨或在水中打磨而得名,耐水砂纸是以耐水纸或经处理而耐水的纸为基体,以油漆或树脂为粘结剂,将刚玉或碳化硅磨料牢固地粘在基体上而制成的一种磨具,其形状有页状和卷状两种。按照磨料分可分为:棕刚玉砂纸;白刚玉砂纸;碳化硅砂纸;锆刚玉砂纸等。按照粘结剂可分为:普通粘结剂砂纸;树脂粘结剂砂纸。[2]

  水磨砂纸质感比较细,水磨砂纸适合打磨一些纹理较细腻的东西,而且适合后加工;水磨砂纸它的砂粒之间的间隙较小,磨出的碎末也较小,和水一起使用时碎末就会随水流出,所以要和水一起使用,如果拿水砂纸干磨的话碎末就会留在砂粒的间隙中,使砂纸表面变光从而达不到它本有的效果,而干砂纸就没那么麻烦,它的沙粒之间的间隙较大磨出来的碎末也较大它在磨的过程中由于间隙大的原因碎末会掉下来,所以它不需要和水一起使用。

其特点是:
1.采用联动线生产,效率较高;
2.由于耐水砂纸采用清漆作粘结剂,所以干燥时间较长,其干燥方式一般采用悬挂式干燥;
3.耐水砂纸一般粒度较细,我国水砂纸的粒度是从P80开始,细粒度与金相砂纸的粒芳衔接。
4.耐水砂纸一般在含水条件下进行打磨作业,所以粉尘较少,劳动条件好。

无尘网砂纸
  在使用无尘网砂打磨,可以将有害微粒由于飘逸所造成的危害降至最低。而2013年,不管是砂碟还是砂条,Mirka无尘网砂都有丰富的粒度范围供你选择,以满足不同打磨作业的需求。不论是汽车,游艇,工程建筑以至飞机制造,无尘网砂都是你最佳的选择。除此之外,P80到P1000的粒度范围可以保证你全部无尘打磨作业一次实现。

  与传统打磨材料对比,没有堵塞,这个特性极大的延长了Abranet产品的使用寿命;极少的结块,高效的吸尘从根本上解决了结块的产生;极高的效率,极大的减少砂碟的更换频率,提高了工作效率。

  在使用无尘网砂打磨,可以将有害微粒由于飘逸所造成的危害降至最低。而2013年,不管是砂碟还是砂条,Mirka无尘网砂都有丰富的粒度范围供你选择,以满足不同打磨作业的需求。不论是汽车,游艇,工程建筑以至飞机制造,无尘网砂都是你最佳的选择。除此之外,P80到P1000的粒度范围可以保证你全部无尘打磨作业一次实现。

  与传统打磨材料对比,没有堵塞,这个特性极大的延长了Abranet产品的使用寿命;极少的结块,高效的吸尘从根本上解决了结块的产生;极高的效率,极大的减少砂碟的更换频率,提高了工作效率。

型号

ATY_年度汇总_2019

{% pdf /usr/sourcefile/S_手记电子硬件/ATY_年度汇总_2019.pdf %}

评论已关闭

Loading...
Fullscreen Image