历史上的今天
今天是:2025年08月14日(星期四)
2019年08月14日 | STM32学习记录之cubemx配置IIC+逻辑分析仪的学习
2019-08-14 来源:eefocus
首先
这里用的开发板是原子的STM32F429,就是通过CUBEMX配置IIC的总线,话不多说,上图

因为原子429的板子的IIC的数据线和时钟线是PH4和PH5,而I2C2的默认并不是这个引脚,大家要根据手上实际的电路图来呀。


这些都是初始化配置,没有需要修改的,就这样默认就好了,至于系统时钟的配置,选用的是外部时钟,只要不超出范围就好了。然后就是生成工程。
下面是主要的程序
#define ADDR_AT24C02_Write 0xA0
#define ADDR_AT24C02_Read 0xA1
uint8_t I2C_Buffer_Write[64];
uint8_t I2C_Buffer_Read[64];
uint16_t i=0;
printf("rn rn*********STM32CubeMX I2C AT24C02 Example*********rn");
printf("rn I2C Write Buffer:rn");
for(i=0; i<64; i++)
{
I2C_Buffer_Write[i]=i; /* WriteBuffer Initialization */
printf("%02X ", I2C_Buffer_Write[i]);
}
/* write data to AT24C02 */
for(i=0; i<64; i=i+8)
{
if (HAL_I2C_Mem_Write(&hi2c2, ADDR_AT24C02_Write, i, I2C_MEMADD_SIZE_8BIT,&(I2C_Buffer_Write[i]),8, 1000) == HAL_OK)
{
printf("rn Byte %02d to Byte %02d Write OK",i,i+8);
HAL_Delay(5);//写完以后需要延时5ms,这个不能少
}
else
{
HAL_Delay(5);
if( HAL_I2C_Mem_Write(&hi2c2, ADDR_AT24C02_Write, i, I2C_MEMADD_SIZE_8BIT,&(I2C_Buffer_Write[i]),8,1000) == HAL_OK)
{
printf("rn Byte %02d to Byte %02d Write OK",i,i+8);
HAL_Delay(5);//写完以后需要延时5ms,这个不能少
}
else printf("rn Byte %02d to Byte %02d Write Failed",i,i+8);
}
}
/* read data from EEPROM */
printf("rn Reading from AT24C02:rn");
HAL_I2C_Mem_Read(&hi2c2, ADDR_AT24C02_Read, 0, I2C_MEMADD_SIZE_8BIT,I2C_Buffer_Read,64, 1000);
for(i=0; i<64; i++)
{
printf("0x%02X ",I2C_Buffer_Read[i]);
}
if(memcmp(I2C_Buffer_Read,I2C_Buffer_Write,256) == 0 ) /* check data */
printf("rn AT24C02 Read Test OKrn");
else
printf("rn AT24C02 Read Test Failedrn");
由于我在这里是用串口输出的结果,程序里面实现的是页写入,因为EEPROM的写入是有限制的,但是读取是没有限制的,所以就全部读取出来。

这个是串口输出的结果。之前在CSDN上的博客看到一些说CUBE配置的IIC有一些BUG,不过目前来说并没有遇到,可能是我实现的功能简单。只要引脚配置没问题就好,下面是逻辑分析仪,刚开始接触逻辑分析仪,听说这个是搞电子的吃饭的家伙。
一开始的时候不会用,在接上芯片引脚之后,只会显示时序图,还傻乎乎的拿着24C02的芯片手册一个个数,真是蠢到家了。

在这里可以设置,

选择两个不同的信道,接上逻辑分析仪
史海拾趣
|
在进行连接线的过程中, 按住W键可进行线宽的设置; 按住L键可进行层的切换 当选择一根strack时,按住F5即可选中整个管脚对; 按住F6可选择整个net网络; 按住Q键进行单位切换; Esc:终止 ...… 查看全部问答> |
|
我给一个USB设备写了个驱动程序 这个设备每次在插入的时候,都需要在UI层进行一系列的配置工作,然后才能开始工作 考虑如果使用Coinstaller,只能在第一次安装的时候起作用,以后再插入就不行了 也不能使用服务或者其他随系统启动运行的扫描进程 ...… 查看全部问答> |
|
最过从朋友那里得到了一个非常好用的LINUX ----AndLinux 其与Ubuntu Linux 是一个系列, 其最大的优点是:可以像普通软件一样,在Windows 下安装, 且所有的Linux软件都可以安装使用. 具体请看 http://baike.baidu.com/view/142446 ...… 查看全部问答> |
|
今天想做一个步进电机的东东,用了6N137光耦作为驱动器的脉冲信号输入。但是不管程序怎么写电机就是不转。 后来用万用表测了一下,发现6N137光耦的输入断也就是接单片机I/O的脚是有脉冲电平的,但是光耦的输出脚Vo始终是高电平,始终不懂。难怪电 ...… 查看全部问答> |
|
收集一些群,给大家玩玩。我一般晚上回去群聊。 花江群 39063007——主要是wince的,单片机啥都有。 珠海电子工程师群 92580412 ——里面有一些骨灰级工程师,偏向硬件。 桂电科协群32986294——里面有部分是学生,但是也蛮多深圳,广州的工程师 ...… 查看全部问答> |
|
请教一下各位高手,,我想用传感器测量一个物体的高度(比如说水杯,,水壶之类的)要求是不受物体的限制,当然高度也会有一个范围。也就是说,当物体往那里一放,就能测出它的高度,,用什么传感器好呢???? 还有,测量液面的高度用超声波传 ...… 查看全部问答> |




