- 博客(196)
- 资源 (20)
- 收藏
- 关注
原创 SPI抓包,逻辑分析仪报错分析(The initial (idle) state of the CLK line does not match the settings.)
逻辑分析仪抓包SPI
2026-09-02 17:28:16
197
原创 结构体对齐与压缩对齐操作
结构体占用空间最小,不浪费空间,对嵌入式数据存储、通信协议封装、硬件寄存器等非常适用,但是也会带来一个问题,非对齐访问,会导致CPU访问速度变慢,对不支持非对齐访问的硬件会导致hardfault异常。,编译器自动对齐,在成员a之后填充了3个字节,在成员c之后填充了2个字节,最终得到整个结构体是16字节,且每个成员的地址都是4的倍数;,加了取消对齐的操作,也可以叫做1字节对齐,成员之间没有填充,最终得到整个结构体是11字节,成员的地址不全是4的倍数。指定对齐数,这里n可以取为4,8,16等。
2026-04-29 20:07:42
54
原创 TI小封装、低功耗数模转换器 DAC7311
DACx311系列总共3个芯片,其中DAC7311是12位,DB15-DB14两位用于设置模式,在正常运行模式下取值为0,DB13-DB2是具体输出的数字值,范围为0-4095,DB1-DB0不用设置。高位在前,低位在后,传输16位数据,先传输DB15,最后传输DB0。AVDD/VREF:供电电压,也是参考电压,2.0V-5.5V;SYNC其实就是SPI片选信号,低电平有效;SYNC:SPI CS,片选;只有写操作,因此只需三根线;Vout:输出电压;
2026-01-21 09:26:15
230
原创 超、超、超小型温度传感器TMP118
可以看出TMP118对时序要求不高,在I2C标准模式下,支持1KHZ到100KHZ的速率。寄存器也很简洁,只有8个寄存器,主要需要关注温度寄存器(0h)、配置寄存器(1h)、器件ID寄存器(Bh)。TMP118,不同的后缀,地址不同,本次测试的是TMP118B,所以I2C地址为0x49。器件ID是0x1180,可以用于检查设备是否在线,验证i2c通讯时序。读出来的数据是数字量,乘以0.0078125,就是实际测量的温度。配置寄存器主要配置转换速率、平均使能位等,使用默认配置也可以。
2025-11-29 12:00:00
472
原创 ZYNQ7020 利用Multiboot,实现裸机程序升级
MULTIBOOT_ADDR寄存器的每一位代表32KB,因此APP2的烧录位置为0x100*0x8000=0x800000。APP2的偏移地址需要32K对齐,另外需要确保APP2的地址在APP1所需空间之外。(3)BootROM程序会自动执行寄存器值对应的位置的程序,跟单片机的IAP跳转类似。通过以上操作,完成了APP1跳转到APP2,利用这个跳转就可以完成裸机程序升级。需要在SLCR_UNLOCK寄存器中写入0xDF0D来解锁。往PSS_RST_CTRL寄存器写1即可自动软件复位。
2025-09-01 06:00:00
1379
2
原创 GD32F4 LVD(低电压监测)功能使用
LVD的功能是检测VDD/VDDA供电电压是否低于低电压检测阈值,该阈值由电源控制寄存器(PMU_CTL)中的LVDT[2:0]位进行配置。LVD通过LVDEN置位使能,位于电源状态寄存器(PMU_CS)中的LVDF位表示低电压事件是否出现,该事件连接至EXTI的第16线,用户可以通过配置EXTI的第16线产生相应的中断。
2024-09-14 17:15:32
2019
原创 【迪文屏幕】上电后默认显示背景图片是0
以往的开发,背景图片都是从0开始命名的,这次鬼使神差的没有使用0,而是从1开始命名,上电后不显示,咨询了技术支持,屏幕上电后默认显示0图片,增加了0图片之后,显示正常。当然有一种情况是不需要0命名的背景图片的,那就是程序指定显示某一张图片。
2024-02-26 21:45:00
1250
原创 【迪文屏幕】开发资料
T5L DGUSII 应用开发指南202306.pdf》,这个文档上面,详细介绍了各种控件的使用方法。等,软件下载地址https://www.dwin.com.cn/download.html。论坛里面有好多demo、经验帖子,可以搜索学习,当然也可以提问题,官方人员会解答。论坛地址:http://inforum.dwin.com.cn:20080/界面设计工具,根据所选屏幕的系统选择对应的工具,一般屏幕的系统有。这个文档可以在官方论坛上找到,也可以直接在csdn上。
2023-09-07 09:00:00
1408
原创 【迪文T5L屏幕二次开发】“增量调节(Incremental Adjustment)”控件的缺陷,以及代替方法
来判断,可以将键值设为0x0001,按下的时候,读到的键值就是0x0001,同时要在代码中将键值清零。:在开发中遇到一种情况:同一个参数,在某些情况下参数的最大值和最小值不一样,那么就不能使用。但是在一些应用场合,会存在“上限”和“下限”不是固定的情况,这种情况下,可以使用。设定了调节的最大值和最小值。这两个值是固定的,不能动态配置。控件代替,在代码中动态扫描,判断键值,然后改变数值。控件了,只能使用其他控件,本文提供一种思路,使用。这里需要在代码中读取。
2023-09-06 13:32:51
835
原创 迪文屏幕SD卡下载显示“SD Card Process... END!“,但是实际下载失败,解决办法
如下图,显示“SD Card Process…”,但是在重新上电后,屏幕没有更新成功。这里要注意一下下载文件的数量,也就是下图黄色框起来的地方,全是“000”。
2023-06-17 08:49:23
2927
原创 硬件SPI与软件模拟SPI速率对比
1、前言本文使用AT32F425驱动RC522来测试SPI1的速率,关于RC522的详细代码操作可查帖子【GD32L233C-START评测】7、硬件SPI1驱动RC522。2、关于AT32F425的SPIAT32F425系列最多有3个spi,本文使用SPI1。3、SPI1的最大速率SPI1挂在APB2总线上,APB2总线的最大速率是96MHz;SPI的最大速率为fPCLK/2,即48Mhz。4、代码实现/*SPI1 : PA4/CS PA5/SCK
2022-07-26 13:40:01
11096
4
原创 【开源】硬件/软件i2c两种方式移植u8g2单色图形库驱动0.96吋OLED
1、前言关于0.96吋OLED的详细操作,可查看一文彻底了解SSD1306驱动0.96寸OLED,本文移植u8g2图形库来驱动0.96吋OLED。2、关于u8g2u8g2是单色显示库的第二个版本。支持lcd和oled,支持众多驱动芯片,比如SSD1305, SSD1306, SSD1309, SSD1312, SSD1316, SSD1320, SSD1322, SSD1325, SSD1327, SSD1329, SSD1606, SSD1607, SH1106, SH1107, SH1108, S
2022-04-27 17:41:05
6504
6
原创 I2C波形分析
本文使用逻辑分析仪,抓取I2C波形,进而分析I2C信号。空闲电平:SCL和SDA都是高电平;起始信号:SCL高电平的时候,SDA从高拉低;结束信号:SCL高电平的时候,SDA从低拉高;ACK信号:在第9个时钟的时候,SDA为低电平;NACK信号:在第9个时钟的时候,SDA为高电平;第一个数据对应的二进制是01110001,转换成十六进制刚好是0x71,也说明I2C是以MSB传输的。...
2022-04-22 20:24:41
11973
1
原创 串口波形分析
本文使用逻辑分析仪,抓取串口波形,进而分析串口数据。串口配置为115200波特率,8个数据位,1个停止位,无校验方式。字符1的波形如下图:从图中可以看到8个数据位,但是在第1位之前和第8位之后也是属于字符1的波形,第1位之前的是起始位,最后一位是停止位,即就是:起始位是低电平,停止位是高电平,起始位之前和停止位之后都是高电平,也就说明串口空闲的时候是高电平,图中数据位对应的二进制是10001100,而字符1对应的二进制是00110001,可以发现两者刚好是相反的,这也说明了串口传输的时
2022-04-15 17:40:19
4410
原创 【GD32L233C-START】15、RT-Thread事件集从中断唤醒任务
1、基本思路在上节的基础上,新增一个任务,任务中获取事件集标志,如果没有获取到则任务挂起,获取到后清除事件标志,在外部中断服务函数中,当按键按下的时候发送事件标志。2、代码实现(1)初始化按键io口为外部中断void KeyInit(void){ rcu_periph_clock_enable(RCU_GPIOA); gpio_mode_set(GPIOA, GPIO_MODE_INPUT, GPIO_PUPD_NONE, GPIO_PIN_0); /* enable the S
2022-03-09 14:46:26
783
原创 【GD32L233C-START】14、RT-Thread多线程、消息队列使用
1、基本思路三个线程,一个消息队列(大小是1,长度是12)线程1:LED 500ms闪烁一次;线程2:adc采样;线程3:oled显示;在线程2中,采样到数据后,通过消息队列发送到线程3,线程3收到消息后,更新oled显示。2、RT-Thread配置默认是没有使能消息队列的,需要使能消息队列;或3、代码实现(1)Led初始化及led线程static rt_thread_t led_thread = RT_NULL;void LedInit(void){ /* enable
2022-03-04 17:12:15
1191
原创 【GD32L233C-START】13、RT-Thread移植到GD32L233
1、安装RT-Thread keil Pack或者离线下载安装:https://www.rt-thread.org/download/mdk/RealThread.RT-Thread.3.1.5.pack2、在工程中勾选RTOS中的kernel 和 shell3、编译报错4、配置时钟#error “TODO 1: OS Tick Configuration.”// #error "TODO 1: OS Tick Configuration." SysTick_Confi
2022-03-01 19:30:40
1831
7
LoRaWAN规范1.0.1
2019-04-02
LoRaWAN规范各地区参数v1.0.2rB
2019-04-02
LoRaWAN规范1.0
2019-04-02
LoRaMac-node-develop(v4.4.2 SDK keil project).rar
2019-11-19
RT-Thread(3.1.5)移植到GD32F150系列MCU
2021-10-14
LoRaWAN规范1.1
2019-04-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅