# I2C BootLoader V0.1 IAP开发流程 须知bootloader和app是两个独立的固件,只是烧写到了FLASH的不同地址处。
- step1: 首先划分好main flash空间, 以本项目为例,将main flash划分成bootloader(addr: 0x08000000 - 0x0800DBFF)和app(addr: 0x0800DC00 - 0x0800FFFF)两部分;
- step2: 准备一份app固件,要求在该app固件中的.ld链接文件中将MEMORY中的FLASH按此处样式修改FLASH (rx) : ORIGIN = 0x0800DC00, LENGTH = 9K, 即ORIGIN修改为step1中app存储起始地址,LENGTH修改为step1中的存储需要的FLASH空间大小, 重新编译固件,生成.bin文件(此处为gd32e23x.bin);
- step3: 要实现i2c烧写固件,同时需要上位机软件和下位机硬件的支持,本项目中上位机软件为host.py,主要实现Serial串口发送接收读写指令,此处因下位机MCU板支持USB通信,所以此处Serial串口即是实现USB串口收发命令功能。本项目中下位机硬件是一块STM32F103C8T6核心板,USB2I2C文件夹下即是该核心板的驱动源码文件,主要实现USB串口驱动和I2C读写,即可认为此时的STM32F103C8T6核心板是一个USB转I2C设备。
- step4: 要实现i2c批量烧写固件,待烧写设备须提前烧写支持i2c烧写功能的bootloader固件,本项目中BootLoader文件夹下即是bootloader固件工程。即该bootloader支持I2C烧写固件到GD32E232K8Q7待编程设备中,项目中的GD32E23
2025-09-26 16:21:01 16.71MB 上位机源码
1
FPGA(现场可编程门阵列)技术是现代电子设计中的一项重要技术,它允许工程师们通过编程来配置硬件逻辑电路。在FPGA开发中,EMIO(扩展多用途输入输出)是一种用于扩展FPGA的I/O资源,使得FPGA能够通过软件定义的接口与外界进行通信。I2C(Inter-Integrated Circuit)是一种串行通信协议,广泛应用于微控制器和各种外围设备之间,具有连线少、成本低等特点。OLED(有机发光二极管)显示屏因其高对比度、低功耗和宽视角等优点而受到青睐,SSD1306是一种常见的OLED驱动芯片。 在本例中,我们讨论的是如何利用FPGA的EMIO功能来实现与SSD1306驱动的OLED显示屏之间的I2C通信。PS(Processing System)部分的代码主要涉及处理器的编程,实现与硬件接口的交互逻辑。 I2C通信通常需要两根线,一根是数据线(SDA),另一根是时钟线(SCL)。在FPGA与OLED显示屏的通信过程中,处理器首先通过EMIO接口初始化I2C协议,然后向SSD1306发送一系列控制命令来配置显示屏的工作模式,比如开启、关闭、清屏、设置亮度等。除此之外,还需要向SSD1306发送图像数据,这些数据会经过处理器的处理后通过I2C接口传输到OLED显示屏上。 由于FPGA的可编程特性,通过EMIO实现的I2C通信协议可以被定制化,以适应特定的应用需求。例如,可以根据OLED显示屏的特性调整数据传输速率,或是在一个系统中控制多个OLED显示屏。 在提供的压缩包文件中,我们可以看到有两个文件:helloworld.c和oled_font.h。helloworld.c很可能包含了一个基础的框架,用于初始化FPGA和PS部分的软件环境,以及实现基本的I2C通信函数。oled_font.h则可能包含了与OLED显示屏显示字体相关的信息,包括字符的字模数据等,这对于显示文本来讲是不可或缺的。 此外,FPGA开发还涉及到其他许多方面,如硬件描述语言(HDL)编程,仿真测试,时序分析,以及硬件调试等。网络在FPGA开发过程中也扮演了重要角色,尤其是在远程调试和在线更新配置文件时。 FPGA使用EMIO实现I2C通信驱动OLED显示屏是一个涉及硬件配置、软件编程以及通信协议应用的复杂过程。通过精心设计和编程,可以将FPGA的强大功能与OLED显示屏的优良显示效果结合在一起,为用户提供高质量的显示体验。而PS部分的代码则是实现这一目标的关键所在。
2025-07-02 16:04:22 7KB 网络 网络 fpga开发
1
实现通过I2C总线中断接收数据并根据数据命令通过PWM控制风扇转速和上报板卡的电压和温度,使用温度传感器采集温度,电压传感器采集电压。
2024-02-26 11:16:55 5.23MB stm32 网络 网络
1
STM32+BQ76952 电池监视器的代码示例 (I2C通信方式)
2024-01-23 22:12:33 138KB
本文描述I2C协议,包含I2C位传输, I2C开始和结束信号,I2C应答信号,I2C写流程,I2C读流程。进阶介绍PowerPC的I2C实现,I2CADR 地址寄存器及PPC-Linux中I2C的实现
2024-01-04 15:22:25 300KB I2C 通信协议
1
STM32F103 I2C通信和串口通信实战项目,接收上位机串口数据,并按照命令格式和命令码通过I2C通信传输命令到IPMC,获取板卡的状态、温度、电压等,并返回给上位机,从而实现人机交互。本项目实现了使用VITA46.11协议的CHMC功能。
2023-10-30 17:14:06 5.24MB stm32 硬件I2C
1
简洁清晰的例程: /*********************************************************************** º¯ÊýÃû³Æ£ºI2C_Test(void) ¹¦ ÄÜ£º²âÊÔEEPROM ÊäÈë²ÎÊý£º Êä³ö²ÎÊý£º ±àдʱ¼ä£º2012.11.22 ±à д ÈË£º ×¢ Ò⣺ÏÈÏòEEPROMдָ¶¨Êý¾Ý£¬È»ºóÔÙ¶Á³öÀ´£¬×îºóͨ¹ýRS232·¢Ë͵½µçÄÔÉÏ£¬ ÒÔÑéÖ¤¶ÁдÊÇ·ñÕýÈ· ***********************************************************************/ void I2C_Test(void) { unsigned int i = 0; unsigned char WriteBuffer[256]; unsigned char ReadBuffer[256]; for(i = 0;i < 256;i ++)//³õʼ»¯´ýдÊý¾ÝÇø { WriteBuffer[i] = i; } I2C_Write(I2C1,ADDR_24LC02,0,WriteBuffer,sizeof(WriteBuffer)); //ÏòEEPROMдÊý¾Ý I2C_Read(I2C1,ADDR_24LC02,0,ReadBuffer,sizeof(WriteBuffer)); //ÏòEEPROM¶ÁÊý¾Ý RS232_Send_Data(ReadBuffer,256); //ͨRS232½«¶Áµ½µÄÊý¾Ý·¢³öÈ¥ }
2023-02-27 10:32:00 6.92MB STM32F4 I2C
1
I2C™模块是用于同其他外设或单片机器件进行通信的串行接口。这些外设可以是串行EEPROM、 显示驱动器和A/D 转换器等。I2C™模块是用于同其他外设或单片机器件进行通信的串行接口。这些外设可以是串行EEPROM、 显示驱动器和A/D 转换器等。
2022-11-23 09:49:12 1.09MB i2c
1
可以实现DSP对EPROM的读操作和写操作
2022-11-01 21:03:50 439KB DSP 28335 I2C
1
本文档描述 CYpress 触控IC的I2C通信协议,并附带通信寄存器。
2022-09-07 09:51:10 647KB cypress TP
1