• 博客(108)
  • 收藏
  • 关注

原创 四、GD32 MCU 常见外设介绍 (6) ADC 模块介绍

查询法采用的是转换单个通道,或者扫描一序列的通道,通过不断切换通道的方式去读取对应通道的ADC数值。12 位逐次逼近式模数转换器模块(ADC),可以采样来自于外部输入通道、内部输入通道的模拟信号,采样转换后,转换结果可以按照最低有效位对齐或最高有效位对齐的方式保存在相应的数据寄存器中。ADC时钟过高,ADC采样时钟高于ADC最高采样时钟获取到的数据不具有参考意义,需要手动分频到合适的ADC 要求的频率;ADC的查询法在获取ADC数值的时候,不允许重入,即不允许在同一时间调用ADC的数据读取函数;

2024-07-23 09:33:57 523

原创 你了解GD32 MCU上下电要求吗

上电过程中,VDD/VDDA电压上电爬坡,当电压高于VPOR(上电复位电压)MCU开始启动,之后内部逻辑电路延迟2ms后NRST引脚拉高,MCU正式启动,此为上电过程。上电过程中,对于上电爬坡斜率没有要求,对于电源稳定性有要求,上电过程中尽量避免电源波动以及突然的跌落,比如上电到2.6V以后再次跌落到POR附近,但没有跌破PDR,则有可能造成MCU加载代码异常进而导致启动失败。掉电电压需要跌落到VPDR以下,尽量跌落到0V,掉电斜率需要大于20us/V,也就是掉电不能太快。

2024-07-23 09:27:23 323

原创 四、GD32 MCU 常见外设介绍 (5) TIMER 模块介绍

GD32 TIMER 主要特性◼ 总通道数: 4;◼ 计数器宽度: 16位;◼ 定时器时钟源可选:内部时钟,内部触发,外部输入,外部触发;◼ 多种计数模式:向上计数,向下计数和中央计数;◼ 正交编码器接口:用来追踪运动和分辨旋转方向和位置;◼ 霍尔传感器接口:用来做三相电机控制;◼ 可编程的预分频器: 16位。运行时可以被改变;◼ 每个通道可配置:输入捕获模式,输出比较模式,可编程的PWM模式,单脉冲模式;◼ 可编程的死区时间;◼ 自动重装载功能;◼ 可编程的计数器重复功能;

2024-07-22 09:42:16 577

原创 四、GD32 MCU 常见外设介绍 (4) EXTI 中断介绍

GD32 EXTI 主要特性(以 GD32F30x 为例)◼ 高效的中断处理;◼ 支持异常抢占和咬尾中断;◼ 将系统从省电模式唤醒;◼ 3 种触发类型:上升沿触发,下降沿触发和任意沿触发;◼ 软件中断或事件触发;◼ 可配置的触发源;◼ Cortex-M4系统异常;◼ 多达68种可屏蔽的外设中断;◼ 4位中断优先级配置位,可配置16个中断优先级;◼ EXTI中有多达20个相互独立的边沿检测电路;EXTI 框图如图所示,EXTI 可分为两大部分功能,一个是产生中断,另一个是产生事件。

2024-07-22 09:40:17 365

原创 四、GD32 MCU 常见外设介绍 (2) GPIO 模块介绍

为了扩展 GPIO 的 灵 活 性 或 外 设 功 能 使 用 , 通 过 配 置 AFIO 端 口 配 置 寄 存 器(AFIO_PCF0/AFIO_PCF1),每个I/O引脚都可以配置多达4种不同的功能。通过使用外设 IO 的重映射功能可以选择合适的引脚另外,通过配置相应的EXTI源选择寄存器(AFIO_EXTISSx)选择触发中断或事件,GPIO引脚可以用作EXTI中断线。

2024-07-22 09:34:45 439

原创 你了解你的GD32 MCU系统主频是多少吗 ?

另外一种最直接最准确的方式,是将系统时钟通过CKOUT引脚输出,然后通过示波器进行查看,如下图所示,CK_SYS为系统时钟,将CKOUT0SEL配置为100,就可以将系统时钟输出到CK_OUT0引脚上,这样外部接示波器就可以查看当前系统时钟了。系统时钟是GD32 MCU的时基,可以理解为系统的心跳,片上所有的外设以及CPU最原始的时钟都来自于系统时钟,因而明确当前系统时钟是多少非常重要,只有明确了系统时钟,才能够实现准确的定时、准确的采样间隔以及准确的通信速率等。

2024-07-22 09:28:45 334

原创 GD32F303想控制PA13~15、PB3和PB4不成功?

可以看到,remap有多种模式可以选择,比如将SWJ_CFG设置为“010”,那么就可以保留SWD功能,即PA13和PA14还可以用于调试,而PA15、PB3和PB4则被“释放”,从而可以当做普通IO或者其他复用功能引脚使用;有没有小伙伴遇到这种情况:在使用GD32F303的时候,想要将PA13~15以及PB3和PB4作为IO口来使用,却怎么也不成功呢?原来,这几个引脚比较特殊,它们在默认情况下,是用于调试的JTAG/SWD口功能,想要当做普通IO口或者其他复用功能来使用需要进行“remap”。

2024-07-20 09:48:09 300

原创 如何防止热插拔烧坏单片机

我们前面讲过芯片烧坏的原理,那么热插拔就是导致芯片烧坏的一个主要原因之一。插入过程中可能出现斜插,将导致12V加到MCU的IO上,或者GND没有有效接入,导致系统浮地,MCU IO变成0V,GND则被抬高。所以对于热插拔的防护,最简单低成本的设计就是在接口信号上串联电阻,电阻大小可根据信号类型和速率决定。在电子产品的整个装配过程、以及产品使用过程经常会面临接口热插拔或者类似热插拔的过程。那么当我们添加限流电阻后,以100Ω为例、-3V为例,可以计算出电流。那么当IO口电压超过手册中的范围会发生什么?

2024-07-19 09:37:31 384

原创 什么是中断向量偏移,为什么要做中断向量偏移?

上一期常见问题《GD32 MCU是如何进入中断函数的》和大家讲过中断向量表的概念,当一个中断发生时,MCU会根据中断号去中断向量表中查找对应中断函数的入口。那如果APP程序中有中断发生,MCU还在0x08000000地址开始的地方去找中断函数入口显然是不行的,因为找到的中断函数入口对应的是BootLoader中断函数,跳转过去的话程序就运行异常了,这时候就需要做中断向量偏移:即让MCU从0x08000000偏移一段长度的地址开始去查找向量表。那么如何实现中断向量偏移呢?

2024-07-18 09:43:48 303

原创 四、GD32 MCU 常见外设介绍(1)RCU 时钟介绍

众所周知,时钟是MCU能正常运行的基本条件,就好比心跳或脉搏,为所有的工作单元提供时间 基数。时钟控制单元提供了一系列频率的时钟功能,包括多个内部RC振荡器时钟(IRC)、一个外部 高速晶体振荡器时钟(HXTAL)、一个外部低速晶体振荡器时钟(LXTAL)、一个或多个锁相环(PLL) 一个HXTAL时钟和LXTAL时钟监视器、时钟预分频器、时钟多路复用器和时钟门控电路等。本章,我们将通过一个“输出HXTAL时钟信号” 的实验来熟悉RCU的工作流程。

2024-07-17 10:04:51 1463

原创 GD32 MCU是如何进入中断函数的

当有EXTI0中断发生,MCU会知道是22号中断来了,内部总线就会去查flash最开始地址中的中断向量表,找到第23个地址(0x08000058),并取得里面的数据也就是中断函数的入口,然后就跳转到中断函数中执行程序了。用过GD32 MCU的小伙伴们都知道,程序是顺序执行的,但当有中断来的时候程序会跳转到中断函数,执行完中断函数后程序又继续回到原来的位置继续执行,那么你们知道MCU是如何找到中断函数入口的吗?正常情况下,程序是不会跳转到这个地址去执行的,那为什么中断信号一来,程序就直接跳转过去了呢?

2024-07-17 09:44:07 447

原创 三、固件库使用方法和启动流程介绍

GD32 MCU标准固件库是一个固件函数包,它由程序、数据结构和宏组成,包括了GD32 MCU所 有外设的性能特征。固件库还包括每一个外设的驱动描述和基于评估板的固件库使用例程。通过 使用标准固件库,用户无需深入掌握细节,也可以轻松应用每一个外设。使用固件库可以大大减 少用户的编程时间, 从而降低开发成本。每个外设驱动都由一组函数组成,这组函数覆盖了该外 设所有功能。

2024-07-16 09:50:48 532

原创 GD32 MCU上电跌落导致启动异常如何解决

2、修改NRST引脚对应的RC阻容,调整MCU启动时间,避开电源电压跌落的时刻,MCU的启动不仅仅看VDD高于PDR,还需要看NRST引脚电压高于0.7VDD,调整NRST对应的RC阻容,可以调整MCU的启动时间。GD32 MCU上下电复位波形如下图所示,上电过程中如果存在吃电的模块,比如wifi模块/4G模块/开启某块电路等,可能存在电源电压跌落的情况,此时若MCU在启动过程中可能会造成MCU加载代码异常,进而导致启动异常。大家是否碰到过MCU上电过程中存在电源波动或者电压跌落导致MCU启动异常的问题?

2024-07-16 09:46:35 421

原创 二 GD32 MCU 烧录说明

ISP模式需要从System区域启动,所以需要让MCU复位时BOOT0引脚状态为高电平。可通过跳线帽、拨码开关、按键或其他控制器控制拉高BOOT0引脚电平,对MCU进行一次复位或上电即可进入ISP模式;进入ISP模式后便可释放BOOT1引脚,此时可使用上位机软件或控制器通过UART或USB的方式进行烧录;当下载完成后需要切换回Flash运行模式,同样让BOOT0引脚拉低为低电平,然后复位或重启可进入Flash运行模式并运行用户代码。使用ISP模式下载的操作流程图见下图。ISP UART下载流程。

2024-07-15 13:57:24 1115

原创 keil中GD32 MCU IAP中APP的存储地址如何设置?

如果你想要通过IAP烧录APP,也一定要烧录到0x08008000起始的flash区域哦,否则跳转到APP中执行程序就会出错的。这样通过keil烧录,程序就自动下载到从0x08008000起始的flash区域哦。前面和大家聊过什么是IAP,那么IAP中APP的存储地址该如何设置呢?

2024-07-15 13:23:41 265

原创 一 GD32 MCU 开发环境搭建

GD32系列为通用型MCU,所以开发环境也可以使用通用型的IDE,目前使用较多的是KEIL、IARGCC和,客户可以根据个人喜好来选择相应的开发环境。目前市面通用的版本有Keil 4和Keil 5:使用Keil 4建议安装4.74及以上;使用Keil 5建议安装5.25以上版本(注意:GD32E23x系列和GD32W515x系列必须使用Keil5开发)。1.1.1 从GD32官网下载相关系列插件。

2024-07-13 14:22:03 1217

原创 什么ISP?什么是IAP?

当MCU刚上电时,会执行用户BootLoader程序(需要注意:这里需要选择将BOOT0接低,也就是让从主flash中启动),工程师需要在用户BootLoader中实现接收数据并对非本程序所在地址flash区域编程的功能,这样用户将APP的bin文件发给用户BootLoader程序,BootLoader程序将APP的数据写到特定的地址中,比如0x08008000开始的地址,这样就实现了通过用户BootLoader烧录APP的功能。好了,现在小伙伴们知道什么是ISP,什么是IAP了吗?

2024-07-13 11:37:47 562

原创 GD32MCU最小系统构成条件

GD32的内部时钟采用RC震荡电路,而外部电路采用的是石英晶振起振获取外部时钟,石英起振比RC震荡电路的精度要高的多。3)第三种方式常用于调试,将程序写入SRAM可以直接进行调试,方便快捷,但是SRAM重新上电后数据会被清空,也就是说写入程序只能使用一次,掉电不保存。常用的方式是串口烧录,也就是ISP下载。需要确保供电的电压电流稳定,以东方红开发版为例,选用GD低压差大电流LDO作为电源转换芯片,保证后端电路的稳定。复位电路在特定条件下给复位引脚发送复位信号,以303为例,一般是拉低使能,运行时拉高。

2024-07-12 09:42:48 498

原创 不同型号的GD32 MCU如何区分?

大家是否碰到过以下应用场景:同一套软件代码希望跑在不同型号的GD32 MCU中,但有些地方需要根据MCU型号进行调整?或者上位机或其他MCU与GD32 MCU通信时需要知道对应的MCU型号是哪个?GD32 MCU的型号区分可以通过PID进行区分,PID定义如下图所示,该寄存器为只读寄存器,出厂被一次性编程,共4个字节,不同型号的MCU,PID是不同的。此时,我们就需要了解如何获取以及区分GD32 MCU的型号。

2024-07-11 11:01:34 765

原创 如何查看GD32 Keil和IAR工程的map文件

那么什么是map文件呢?map文件是编译器编译工程后生成的一个文件,文件会有很多信息,比如函数地址及所占空间大小、变量地址及所占用空间大小、栈顶指针、整个工程所占用的flash和RAM空间大小等等。在进行代码分析时,map文件是非常重要的。我们在设计调试程序时,往往需要知道一个函数或一个变量它在MCU中具体所在的地址以及所占用的空间大小,这时候就需要查看map文件。点击OK后,将文件进行重新编译,就可以在output文件夹下看到map文件了哦。IAR工程一般默认是不生成map文件的,我们需要进行一些设置。

2024-07-10 09:35:52 552

原创 如何通过Jlink查看GD32芯片跑飞后程序死在哪里?

首先,我们需要将目标板和Jlink进行连接,只需要接三根线:SWDIO(PA13)、SWCLK(PA14)和GND,切记,一定不能接NRST脚,否则连接的时候就可能把芯片复位了,当然,也一定要保证连接过程中芯片不要断电。红色方框内的PC值就代表了程序当前执行的位置,我们可以通过查看程序工程中的map文件,就可以找到程序正在运行哪个函数了,如小编这里的PC值是0x08000AAA,map文件中符合这个地址的是delay_1ms函数。,并回车,如果一致则直接回车。提示连接到Jlink,然后输入:s,并回车。

2024-07-09 09:47:15 750

原创 SPI全双工模式下数据接收异常的一个原因

除了有发送缓冲区和接受缓冲区外,还有一个移位寄存器,所以当使用SPI发送最后一个字节到发送缓冲区时,倒数第二个字节还在移位寄存器中没有发出,此时如果应用程序将从机CS拉高的话,就会导致从机失效,从而不会发出正确的数据。当该位为0时,就标志着SPI缓冲区和移位寄存器中都没有数据了,你就可以放心大胆的控制CS片选脚啦。这句的意思是等待SPI通讯空闲,对应读取的标志位是SPI_STAT 寄存器中的bit7位。我们知道,SPI是一主多从的总线结构,主机和哪个从机是通过CS片选来决定的。

2024-07-08 09:45:35 185

原创 GD32 MCU ADC采样率如何计算?

首先给大家介绍下ADC时钟如何配置,如下为RCU时钟树中有关ADC时钟的说明,通过ADCPSC控制位可以选择ADC时钟来自于AHB还是APB2分频,若ADCPSC配置为0,ADC时钟为APB2时钟2/4/6/8/12/16分频,若ADCPSC配置为1,ADC时钟为AHB时钟5/6/10/20分频。ADC时钟计算好后,根据不同的分辨率就可以计算采样率了,如下图所示,不同的分辨率对应的采样转换时间是不同的,比如12位分辨率,采样转换就需要14个ADCCLK。

2024-07-07 09:36:21 901

原创 GD32MCU如何实现掉电数据保存?

若系统供电只有VDD供电,VBAT外部未接电池或者需要保存的数据比较多的情况下,可以选择使用内部Flash作为存储介质,为了节省数据更新的时间,可以采用双备份的方式,在系统运行的过程中,先擦除一个备份,检测到掉电事件后,节省擦除时间,直接向备份区域写入更新数据;GD32 MCU基本都支持备份数据寄存器,GD32E103系列支持84字节数据寄存器,可以在VDD掉电,VBAT有电的情况下进行数据保存,备份数据寄存器不需要擦除可以直接写入,数据更新速度较快。

2024-07-06 09:31:08 1174

原创 【GD32F303红枫派使用手册】第三十节 CAN -CAN通信实验

连续输出显性电平最多的单元可继续发送,比如两个CAN单元同时发送数据,其中单元一发出的数标准帧的ID为0b,00110000000,而单元二发出的标准帧ID为0b,00100000000,可以看到发送到第4位时,单元一发出的是逻辑“1”,单元二的是逻辑“0”,因为总线上“0”比“1”优先级搞,所以此时单元二获得总线发送权,单元一将自动停止发送。好,现在就可以来算CAN的波特率了,按照CAN分频系数为6,位段1为5,位段2为4,一个位占用的时间为6/60M*10 = 1ms,也就是波特率=1M。

2024-07-05 13:19:57 1158

原创 GD32 Timer定时器周期时间计算公式

其一为prescaler,即Timer的分频系数,该分频系数将Timer频率进行分频后给到计数器时钟,计算公式为:计数器时钟频率 = CK_TIMER/(prescaler+1),故图中计数器时钟频率为120M/12000 = 10KHz,即每100us,计时器进行一次计数。我们来看下图方框中的提示,方框1中写到,如果APB1的分频系数为1的话,这些Timer的频率就等于CK_APB1,如果APB1的分配系数不为1,则Timer的频率等于CK_APB1*2。方框2中的内容和方框1中相同,就不再赘述。

2024-07-04 10:19:00 1022

原创 【GD32F303红枫派使用手册】第二十九节 USB-IAP升级实验

IAP主函数如下所示,开始主要为delay延迟配置以及按键配置,之后判断KEY1按键是否被按下,如果KEY1按键没被按下,将会进入到跳转代码段,如果APP_LOADED_ADDR(0x08008000U)地址中有对应APP的堆栈指针,则认为APP段有数据可直接跳转执行。IAP的功能为通过USB接口通信的方式对app端代码进行更新。将本实验历程烧录到红枫派开发板中,打开GD32 ALL IN One上位机,如下图所示,接口选择USB,Bootloader协议选择IAP,之后点击connect进行连接。

2024-07-04 10:06:09 513

原创 如何对GD32 MCU进行加密?

MCU代码的加密和解密是一个永恒的话题,对于一个成熟的产品芯片加密也是一个必须要考虑的问题,大家如果有其他好的MCU加密方法,也欢迎大家在评论区留言。GD32 MCU有哪些加密方法呢?大家在平时项目开发的过程中,最后都可能会面临如何对出厂产品的MCU代码进行加密,避免产品流向市场被别人读取复制。实际使用中,大家可以选择多种加密方式共用,以达到更好的加密效果。

2024-07-03 11:38:28 720

原创 【GD32F303红枫派使用手册】第二十八节 USB-虚拟串口实验

数据接收通过cdc_acm_data_receive()函数实现,该函数的程序如下所示。本例程主函数如下,该函数架构与虚拟键盘例程相似,当USBD设备初始化且枚举完成后,USB设备首先通过cdc_acm_check_ready()函数check是否准备数据发送,如果不需要发送就调用cdc_acm_data_receive()函数接收上位机发送的数据,如果需要发送就调用cdc_acm_data_send()将接收到的数据发送给主机,主机再回显到串口调试助手的接收显示界面中。该设备类采用批量传输。

2024-07-03 11:08:34 1139

原创 GD32F303 使用PA8输出内部时钟频率

今天,我们以GD32F303为例来教大家如何通过PA8口输出内部时钟频率(有些GD32系列不一定是使用PA8口,小伙伴们需要自行查找资料确认)。另外在库文件gd32f30x_rcu.c中定义了时钟输出函数rcu_ckout0_config,在函数注释中已经将可调用的参数列出,但需要注意,红色方框以外的参数仅可用于GD32F305/307即互联型(CL)产品,小伙伴们可以自行查看GD32F30x系列HD和CL产品系列时钟树的不同哦。以上就是今天的内容,小伙伴们还想要了解什么,欢迎评论区留言哦。

2024-06-27 10:33:32 492

原创 【GD32F303红枫派使用手册】第二十七节 USB-虚拟键盘实验

首先为大家介绍USB通信的一些基础知识,包括USB协议、枚举流程等,建议读者可以多多阅读USB协议,以更深入了解USB,USB官网链接如下,可参考:https://www.usb.org/在该函数中,如果设备已经被枚举成功,则首先将prev_transfer_complete标志位设置为0,表明接下来将进行发送数据,数据并未发送完成,之后,调用usbd_ep_send()将需要发送的报告拷贝到USB外设缓冲区中并设置端点为有效状态,等待主机发送IN令牌包,USB设备将外设缓冲区中的数据发送给主机。

2024-06-27 10:15:13 1133

原创 MCU复位时GPIO是什么状态?

那么我们现在知道了,除去一些特殊IO和软件配置时序我们需要注意,在MCU IO口初始化前其他IO都是高阻状态,那么高阻状态是什么电压?大家一定遇到过上电或者复位时外部的MOS电路或者芯片使能信号意外开启,至此有经验的工程师就会经常关心一个问题,MCU复位时GPIO是什么状态?所以当MCU复位后,GPIO初始化前一些特殊GPIO是会有内部上下拉或者输出状态的,我们需要根据电路电平要求来合理选用GPIO,避免复位时IO口出现误输出。2、设置GPIO输出高还是低;这样就不会在初始化过程出现毛刺,需要严格遵守。

2024-06-26 10:33:53 612

原创 【GD32F303红枫派使用手册】第二十六节 EXMC-液晶驱动实验

这里巧妙的是使用EXMC_Ax引脚实现D/C的数据/命令切换功能,所以我们只需要选择一个方便布线的EXMC_Ax引脚,然后在软件中对该引脚对应的EXMC逻辑地址进行操作就可以实现程序读写不同地址时,D/C引脚的状态切换,从而实现访问一个EXMC地址时是数据或命令类似,访问该地址位反向的任意地址就是另外一个类型。exmc使用了扩展模式,这样读和写的时序可以单独配置,因为LCD对读和写的要求时间是不同的,读的时候速率不能太高,如果使用一种参数类型就会为了满足读的要求而降低写的速率,影响最终刷屏的性能。

2024-06-26 09:42:36 840

原创 芯片烧坏时发生了什么?为什么总是VDD短路?甚至封装开裂冒烟?

如果电源能提供的电流足够大,那么通过芯片内部融化金属的连接流过几A(读“安”)电流产生更大温升,芯片物理介质会大面积碳化甚至气化,瞬间的高温可能让封装体燃烧冒烟,同时芯片内部严重分层产生的压力让封装体字节爆裂。那么当IO口内部流入电流时,芯片内部的集成电路金属线和器件因为有阻抗存在就一定会产生温升,所以当电流足够大时,芯片内部金属层或器件会出现熔断,融化的导电介质会扩散开,和周围电路粘连在一起。当然如果通过LDO等提供的最大电流较低,芯片不会出现明显的外观损坏,会让我们对芯片什么坏了更加摸不着头脑;

2024-06-25 10:28:52 631

原创 【GD32F303红枫派使用手册】第二十五节 EXMC-外部SRAM读写实验

EXMC是MCU的外部存储控制器,可以配置实现各类片外设备的通信协议,包括SRAM、PSRAM、NOR FLASH、NAND FLASH等,也可以通过配置实现一些其他通信协议,如8080接口的LCD驱动、FPGA通信等,可灵活的实现很多异步同步信号输入输出,时序时间可配置。EXMC在初始化后,基本上通过程序的地址映射就可以进行操作了,需要根据外部器件的要求进行exmc相关参数配置,exmc可配置参数有很多,但选定好一个模式后实际在这个模式下需要配置的参数是有限的,一些结构体成员只需要按默认参数配置即可。

2024-06-25 10:06:09 1241

原创 GD32 串口接受异常的几个原因

我们知道,串口每个byte的数据都有一个起始位,占一个bit时间,如果由于一些原因导致对方发过来的数据起始位过短的话,MCU就无法识别到这个起始位,从而这个byte的数据就不会被接收。GD32库中这个值默认是8M或25M,而有的小伙伴在用其他频率的晶振时,虽然根据实际频率修改了配置主频的函数,但没将HXTAL_VALUE这个值修改为实际值,就会导致配置出来的波特率和预想不符,从而导致波特率异常。以上,就是小编总结的几点串口接收异常的可能原因,小伙伴们有知道其他原因的,欢迎在评论区交流哦。

2024-06-24 13:07:16 1032

原创 【GD32F303红枫派使用手册】第二十四节 DHT11温湿度传感器检测实验

dht11_check()为check DHT11是否正常连接以及工作,其实现如下,其主要通过判断DHT11是否能够响应主机的复位请求操作来判断DHT11是否连接以及工作正常,如果工作正常,该函数返回值为0,否则返回1.DHT11温湿度读取函数如下,通过该函数将会连续读取5个字节数据,前两个为湿度数据,之后两个为温度数据,最后一个数据为校验和。dht11_reset()为复位DHT11操作函数,其实现如下,如原理中介绍,首先拉低数据引脚20ms,之后拉高30us,实现对DHT11的复位操作。

2024-06-24 10:21:30 1096

原创 如何降低MCU系统功耗?

大家在做MCU系统开发的时候,是否也碰到过降低MCU系统功耗的需求?

2024-06-23 12:01:34 729

原创 【GD32F303红枫派使用手册】第二十三节 SDIO-SD卡读写实验

SDIO初始化配置在sd_io_init()函数中,其中包括sd_init()初始化、sd_card_information_get()SD卡信息获取、sd_card_select_deselect()SD卡选择、sd_cardstatus_get()SD卡状态获取、sd_bus_mode_config()SD卡总线宽度配置以及sd_transfer_mode_config()SD卡通信模式配置,历程中选择了4线查询模式。SD卡正常工作,就是根据SD卡初始化流程图,发送命令,收到回复,直到流程结束。

2024-06-23 11:33:04 1172

原创 GD32 MCU的选项字节是什么?

USER为用户配置字节,可以配置芯片从BANK0还是BANK1启动,配置低功耗模式唤醒后继续进入低功耗模式还是复位,配置是否使能硬件独立看门狗(硬件看门狗使能后,芯片上电后会自动打开看门狗,如果读者有发现芯片看门狗复位,且软件上没有打开看门狗,就可以排查下看是否该控制位被打开,另外硬件看门狗对于ESD软件防护有帮助,在可以接受复位的ESD测试中,使能硬件看门狗上电后即作用,可以规避从上电到启动软件看门狗过程中死机的问题);读者朋友们是否会有以上的疑问,首先我们先为大家介绍选项字节是什么以及选项字节的功能。

2024-06-22 11:06:34 806

GD32H757ZMT6海棠派开发板资料下载

由聚沃科技携手兆易创新研发的GD32H757ZMT6海棠派开发板 GD32H757开发板外形尺寸 100mm *60mm,板内集成了SDRAM/SD卡槽/TFT_LCD接口/RGB565接口/OLED接口/摄像头接口/NOR FLASH/SWD+USART接口/USB接口,板载资源丰富。 采用144引脚的GD32H757ZMT6作为主控芯片,主频高达600MHZ,芯片自带3840K字节FLASH和1024k字节SRAM,并外扩32M字节SDRAM和16M字节NOR FlASH,板子提供多种标准接口方便实验和产品开发。

2024-06-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除