- 博客(47)
- 收藏
- 关注
原创 米勒电容-Mos管驱动台阶
现象-Mos的米勒电容导致,Mos管的上升和下降不够陡峭是Mos管发热的直接原因。Vgs的测量,是G、S的电压差,并非G和GND的电压差。Mos管存在三个电容,从Mos手册可以看到电容。Ciss是输入电容,Ccss是输出电容。Cgs会导致上升沿缓慢和振铃现象。Cds影响功率回路。Cgd是米勒电容。Cgd跨接在G和D之间,使得输出的信号被耦合在了输入端,导致Mos开通时间延长发热,或者Mos误导通烧毁。电容知识:测试电路:黄-GS,蓝-DS,粉色-SS。
2025-03-31 18:03:27
554
原创 器件选择1
一般需要NMos管,基级驱动需要电压Vgs一般10V-20V,若使用12V驱动的Mos管,则Vgs一般需要达到12V,驱动电压接近12V,Mos管内阻越小。Mos管的驱动一般为Mos管寄生电容的充放电问题,一般充放电速度越快,电流越大,速度越慢,电流越低。负载电容关系到外部电容选择设计。芯片负载电容(常用20pf) =(并联电容1*并联电容2)/ (并联电容1+并联电容2)+走线寄生电容(2-3pf)+芯片寄生电容(若有,例如手册7-8pf)。电容串联计算公式 1/C = 1/C1 + 1/C2。
2025-03-15 16:01:16
951
原创 FreeRTOS原理
然后任务TaskBlinkRedLed可以通过xQueueReceive来从队列中获取数据传输到任务的变量message中,此处cpu运行到这个函数,若队列中没有消息,cpu会先运行其他任务(任务阻塞),当xQueueReceive获取到队列的参数值,会继续从xQueueReceive往下执行。1、正常单片机作为单核,只能同时执行1个任务,若想同时执行2个任务或者定时长执行多个任务只能进行定时中断,或者定时计时判断。若不同的任务使用同一全局变量,可能会导致不同任务运行中变量值不同步。
2025-03-15 00:31:04
168
原创 CANID-MCP2518FD屏蔽寄存器赋值(11bit,CAN2.0标准帧)
在使用MCP2518FD时,需要多个标准帧接收,但是需要用到屏蔽器和过滤器,否则庞大的数据量会导致设备接收处理不过来。若使用接收中断(中断或查询方式),会导致设备工作异常。
2025-03-12 01:13:28
944
原创 通信校验和
例如Frame_Sum = 477,我们计算校验和,计算机为了计算方便,正数原反补相同,负数进行补码存储。利用数据和的,低8bit字节取反+1的补码获得,a = 256%数据和(低8bit)。然后接收端通过 数据和+a = 256(低8byte = 0)来验证数据正确性。1111 .... 1111 0010 0010(反,除符号位全部取反)-Frame_Sum(int)->取低8bit(uint8_t)数据和+(uint8_t)(-Frame_Sum)=0。0010 0011作为传输字节(正数)
2025-03-07 14:08:15
123
原创 结构体位域操作,和共用体配合使用
main中通过c创建共用体变量f,通过GetData的结构体变量定义,所以可以进行f.d.a和f.d.b操作,操作这8bit的高3和低5bit。GetData定义了一个结构体变量,该结构体变量将unsigned char的bit进行了重新分配,其中低5bit为a;c定义了一个共用体变量,其中将GetData和unit8_t共用8bit空间,因为GetData变量将bit更细的划分了。最后输出可以看到,输出f.e为8bit作为uint8_t的一个整体,也可单独输出bit,a、b。需要配合共用体使用。
2025-03-03 23:14:16
326
原创 蜂鸣器使用
无源蜂鸣器模块根据输入的 不同方波信号(作为震荡源)可以发出不同的声音。驱动电路中三极管电阻一般为1K-4K都行,能够让三极管导通即可。(三极管即带箭头的部分,基极和发射机(PNP)或者集电极(NPN)能够导通,并产生驱动电流,则发射极和集电极即可导通)芯片驱动蜂鸣器。
2025-03-02 21:54:41
693
原创 python,串口接收的字节对象画图
实例中,用数据模拟了串口接收到的数据包,数据包有包头和包尾,数据默认为黑色(RGB565),(RGB565转RGB888和PIL图像)显示在canvas画布。
2025-02-27 00:41:13
104
原创 Androidstdio-真机调试
调试app可以在日志中查看日志,详细日志查看方法看前面的帖子。更新完成后,在编译器查看,此时真机已经显示出来了。Androidstdio设置中下载USB驱动。如果有这种日志输出,运行到此处日志就会显示。手机通过数据线插入电脑。
2025-02-01 19:53:56
260
原创 Android学习制作app(ESP8266-01S连接-简单制作)
部分理论见和以下直接上代码和效果视频,esp01S的收发硬件代码目前没有分享,但是可以通过另一个手机网络调试助手进行模拟。也可以直接根据我的代码进行改动自行使用,代码中已经对模块进行了详细注释。本人不是java开发专业人士,也是通过ai完成的。使用以下文件需要完成AndroidStdio的安装和SDK,SDK插件、gradle的配置,详细可以见之前的文章。
2025-02-01 19:44:23
1658
原创 Android Studio安装配置
如果没意外下载完成后应该会成功,如果有问题就查看报错,是不是什么版本没对上,目前使用SDK34,SDK TOOL34,Gradle8.4 ,Gradle Plugin8.3.0-rc01,JDK好像是自动配置的8还是7,Android Studio安装后会自动配置。安装过程中,文件夹放在自己想放的位置(尽量便于管理,例如:D:\developSoft\Android Studio23.2.1\)。配置SDK地址,我放在默认目录下的,应该可以不放在C盘。安装完成后打开后,直接新建工程,设置(下载记得点OK)
2025-01-23 22:10:39
1254
原创 ESP8266固件烧录
ESP8266芯片本身支持26MHz和40MHz晶体,如果使用40MHZ晶体,默认波特率为115200,如果使用26MHz晶体,UARTO电源后的波特率=26*115200/40=74880,安信可ESP8266系列模块都使用26MHz,因为一般串行端口工具不支持波特率,所以打印时会出现乱码。下图是官方给出的图片,其中ESP8266-01S没有引出GPIO15引脚,只引出了八个引脚,分别是3V3、RST、EN、TX、RX、IO0、IO2、GND。将模块沿着板的一侧放置,天线沿着板的另一侧放置。
2025-01-15 11:33:34
2049
原创 单片机基础-C语言指针
((__IO uint16_t *)(0x1FFFF7E8))操作,对于0x1FFFF7E8,通过(__IO uint16_t *)变为uint16_t类型数据的32bit地址指针,通过*取该地址的值返回。指针变量表示的指向变量的类型,指针变量的大小和系统bit有关,指针变量指向的值和指针变量类型有关。指针变量根据存放系统的不同,占用空间大小也不同,实际上就是根据系统单词处理bit来占用的空间,例如32bit系统,需要用指针存储32bit的地址,所以指针占用空间32bit,4byte。
2025-01-11 17:39:38
242
原创 STM32内置Flash
1、烧写程序后可以看到程序持续运行,此时、OLED显示程序存储区flash的最后一页存储的8Byte数据,第一次使用为0x00000000,可以看到指定的flash第一次读写标志位0xA5A5和0x00等数据已写入。2、按键PB10可以看到程序存储区flash最后一页存储的前5字节当前数据变为0x1111;0x2222;0x3333;0x4444;按键PB11可以看到数据会自增。
2025-01-09 00:02:14
1316
原创 STM32-WWDG/IWDG看门狗
WWDG/IWDG一旦开启不能关闭,可通过选项字节在上电时启动硬件看门狗,看门狗计数只能写入不能读取。看门狗启用时,T6bit必须置1,防止立即重置。
2025-01-07 19:26:17
1336
2
原创 PWR-STM32电源控制
睡眠模式不响应其他操作,比如烧写程序,烧写时按住复位键松手即可下载,在禁用JTAG也可如此烧写程序。对于低功耗模式可以通过RTC唤醒、外部中断唤醒、中断唤醒。
2025-01-06 17:08:16
929
原创 STM32-BKP备份寄存器&RTC实时时钟
其中year为从1900年的第几年(最小应该为70);mon月份从0开始;wday表示周几;yday表示每年的第几天;isdst是否使用夏令时,1表示用,0不用,-1表示不知道。夏令时为在夏天的某段时间将时间提前一个小时。实际使用:mktime函数原理,通过输入的年月日时分秒计算,其他参数会自动计算回填,可以通过此函数自动计算星期。strftime函数参数(char *c,size_length,const *char,const struct tm*),其中const *char为格式字符串。
2025-01-03 15:12:42
1060
1
原创 SPI通信-(STM32)
非易失性存储器一般为Flash(Nor Flash、Nand Flash)、EEPROM。易失性存储器一般为SRAM、DRAM。固件程序存储为XIP(eXecute in Place):直接把程序文件下载到外挂芯片中,需要执行程序时,直接读取外挂文件的程序芯片进行执行。就地执行,比如电脑里的BIOS固件。双重SPI和四重SPI,利用总线线束进行多根一起收发(MISO、MOSI、WP写保护、HOLD),提高通信速率。寻址为24bit,
2025-01-02 13:10:02
1384
原创 STM32-I2C通信
软件撰写通信功能(根据引脚进行宏定义)、撰写基本通信单元(GPIO初始化、数据和时钟高低电平控制宏定义(写一bit),读1bit,起始(重复起始)、终止、发送一个字节、接收一个字节、发送应答、接收应答)、建立芯片的c和h文件、在芯片文件中建立基于通信基本单元功能(指定地址指定字节数读、指定地址指定字节数写、寄存器结构体和共用体映射、芯片配置函数(初始化:解除睡眠模式、配置电源管理和采样分频、配置屏蔽过滤、其他功能初始化)、读芯片数据函数、解除睡眠模式、通信初始化等)、
2024-12-27 11:04:14
1554
原创 STM32ZET6-USART使用
RB8和TB8是奇偶校验位,可选择是否使用。一般需要校验位,则选择9bit数据,不需要校验位则选择8bit。波特率:每秒传输码元的个数,可能每个码元包含信息量不止1bit,单位为码元/s,或者为bund。比特率:每秒传输bit的速率。单位bit/s,或者bps。在二进制调制的情况下一个码元就是一个bit。
2024-11-02 15:52:18
903
原创 STM32F103-ADC采集(+DMA)
两个内部信号源是内部温度采集和内部电压,内部参考电压是内部1.2V的基准电压,不随外部供电的改变而改变,如果外部供电电压不准,那么可以进行内部基准电压采集校准。模拟看门狗可以进行自动检测阈值。
2024-10-25 16:31:05
3272
原创 CAN2.0A,CAN2.0B
如果您要组网的CAN设备同时支持CAN 2.0A和CAN 2.0B,那么它们可以在同一总线上进行通信。在这种情况下,CAN 2.0A设备和CAN 2.0B设备可以通过共享相同的物理连接进行数据交换。CAN 2.0A和CAN 2.0B是CAN协议的两个不同版本,它们有一些细微的差异。CAN 2.0A和CAN 2.0B的物理层是一致的,它们都使用相同的电气特性和传输速率。因此,从物理层上来看,CAN 2.0A和CAN 2.0B是可以组网的,可以共享相同的总线进行通信。
2024-10-17 10:07:57
295
原创 STM32F103C8T6 - 定时器
PSC、CNT和自动重装载寄存器构成了最基本的计时电路(时基单元),基本定时器只能选择内部时钟,所以时基单元直接连接到了内部时钟输入CK_INT。RCC的TIMxCLK一般都是系统的主频72MHz。时基单元可以对系统的72MHz输入时钟进行分频,0为不分频,/1。值为0-65525,即1-65536。CNT(16bit)对输入的时钟进行计数,没来一个上升沿,计数+1,CNT可以从0加到65535,正常会一直加到目标值,如果到了目标值,会产生中断,中断结束后会从继续0开始。
2024-10-08 10:59:55
3239
原创 STM32F103C8T6-中断
灰色为内核中断,中断地址是每次中断后跳转的地址,是固定的。相同的PIN不能同时触发中断,比如GPIOA1,GPIOB1.,可触发中断响应,也可以触发事件响应。
2024-09-14 18:05:31
1274
原创 GPIO输出-STM32F103C8T6
基本的传感器分压电路,N1是可变电阻,C2接地,应该是滤波电容,N1和R1对VCC进行分压,当N1电阻为0,下拉作用最大,此时输出为低电平0V。当N1无穷大,等效断路,VCC上拉输出。N1对VCC进行分压,实际为VCC/(N1/(R1+N1)),AO点的电平为减去R1分压后的电平,即N1电平。二值化芯片,对输出电平进行二值化,使用LM393(内部为电压比较器(运算放大器电路)),IN+输入模拟量,运算放大器进行二值化,IN-的滑动变阻器用于对LM393输入二值化阈值。对IN-和IN+比较就能生成输出。
2024-09-14 14:07:25
461
原创 keil断点调试
命令窗口开关-反汇编窗口开关-符号窗口,可以实时查看所有的变量值(点击后在watch可以显示)- 寄存器窗口-栈窗口-串口窗口-波形图窗口等。System Viewer是系统资源查看,可以看到所有的芯片外设寄存器,可以看到寄存器的值。设置断点点击全速运行会运行到断点处。
2024-09-14 14:06:22
577
原创 keil生成bin文件(简单)
3、点击bulid即可在工程目录生成HexBin文件夹,下面有bin文件。1、在工程文件夹创建HexBin.bat文件,将以下内容复制进去。::将bin文件生成到HexBin文件夹 >nul屏蔽成功命令。::将hex文件复制到HexBin文件夹。::设置fromelf.exe位置。::创建输出文件夹 HexBin。::设置.axf文件所在目录路径。::设置.axf文件的位置。2、keil魔术棒进行配置。::设置输出后的文件名。::将hex文件重命名。
2024-09-13 10:14:02
582
原创 keil5安装和配置
3、赋值keil下的C51下的tools.ini内的文本,在keil下的MDK下的tools.ini内的最后添加这些文本。2、将keil下的C51文件夹下的UV4文件夹内的内容全选,复制到MDK文件夹下的UV4中,跳过相同的文件。1赋值到LIC,2选中C51,3点击ADDLIC,进行破解。4、刚复制进来的文本的path更新成MDK的路径。1、将C51中的C51文件夹放到MDK文件夹中。3、使用安装包安装C51到C51文件夹。4、安装MDK到MDK文件夹。可在官网下载或者其他地方获取。同理添加ARM破解码。
2024-09-11 18:04:41
590
原创 STM32新建工程(STM32F103ZET6为例)
鼠标点击main文件中,双击即可生成代码以上建立的寄存器开发环境(我们对寄存器开发环境进行了解即可,下面一小部分是寄存器开发点灯示例,不感兴趣可以跳过)(a)首先是RCC的寄存器,来使能GPIO的时钟,GPIO都是APB2的外设APB2 外设时钟使能寄存器(RCC_APB2ENR)写1是打开GPIOC时钟,即RCC->APB2ENR = 0x00000010;(b)需要配置PC13口的模式(端口配置高寄存器(GPIOx_CRH) (x=A..E))CNF13和MODE13就是配置13号口的。
2024-07-05 14:08:17
2580
ECM简单测试,4-20mA电流传感器抗干扰测试,信号地隔离,电感电容添加测试、外部干扰内部干扰分析
2024-06-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人