641|9

2248

帖子

2

TA的资源

五彩晶圆(中级)

【STM32H5开发板】I3C总线和I2C总线设备的兼容性测试 [复制链接]

STM32H563有I3C总线支持,I3C的速度要比I2C高很多可以支持到12.5MHZ,I3C总线与传统的I2C设备仍然是兼容的,增加了软中断功能。但是我手头没有I3C的设备,而且我个人也不怎么喜欢I2C设备,主要是I2C是双向的总线,这个在隔离电路中很难实现。相比较更喜欢SPI设备。这次的测试还是使用OLED屏做测试,只是采用的是I2C总线。

image.png  首先还是接口选择,

image.png  本次选择的是

PB8 <-----> SCL

PB9 <-----> SDA

VCC<----->VCC 

GND<----->GND

电源和地

主要是I2C的速度

image.png  开始我使用的是默认的100K,后来改成200K发现也可以。其它直接默认就可以。

设置完成后,生成程序。程序主要是两个ssd1306_fonts.c和ssd1306.c,这是我以前找的SSD1306的驱动,将内容修改成需要的。又原来的#define SSD1306_USE_SPI改成#define SSD1306_USE_I2C,引脚修改一下

#define STM32H5
#define SSD1306_USE_I2C

//#define SSD1306_DC_Port
//#define SSD1306_DC_Pin
//#define SSD1306_Reset_Port
//#define SSD1306_Reset_Pin

#ifndef __SSD1306_H__
#define __SSD1306_H__

主程序较为简单和SPI是一样的


  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_ICACHE_Init();
  MX_ADC1_Init();
  MX_USART3_UART_Init();
  MX_SPI3_Init();
  /* USER CODE BEGIN 2 */
  ssd1306_Init();
	ssd1306_Fill(Black);
	ssd1306_UpdateScreen();
  /* USER CODE END 2 */
  
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */
    ssd1306_SetCursor(0, 0);
		ssd1306_WriteString(sayStr, Font_11x18, White);
		printf("Hello,world!\n");
		ssd1306_UpdateScreen();
		HAL_GPIO_TogglePin(LED1_GPIO_Port,LED1_Pin);
		HAL_Delay(500);
    /* USER CODE BEGIN 3 */
  }

先进行初始化,然后显示就可以了。

image.png  效果如图

后记:

这次测试出现了较为奇怪的现象:我的程序烧写后不能马上执行,而且按硬件复位按钮也不行,板子仍然没有反应。我把前几天的程序又烧进去都是这个现象,板子只能通过keil的debug启动,而且还需要多次按“执行”才可以启动。不知道为什么。到目前为止还没有解决。

image.png  

此帖出自stm32/stm8论坛

最新回复

是升级的I2C总线,主要是延用了两条数据线的设计,放宽了脉冲的要求,加入了交互指令,加强了对话周期   详情 回复 发表于 5 天前

回复

3787

帖子

3

TA的资源

版主

这次测试出现了较为奇怪的现象:我的程序烧写后不能马上执行,而且按硬件复位按钮也不行,板子仍然没有反应。我把前几天的程序又烧进去都是这个现象,板子只能通过keil的debug启动,而且还需要多次按“执行”才可以启动。不知道为什么。到目前为止还没有解决。

这种原因是因为strat信号没有获取到的原因。

此帖出自stm32/stm8论坛

回复

3787

帖子

3

TA的资源

版主

我原来在一次测试可遇到过,你可以修改为soft来验证一下。

此帖出自stm32/stm8论坛

回复

3787

帖子

3

TA的资源

版主

或者说是一进去后,初始化i2c,他就显示超时了,你可以在超时判断那里加修改超时的初始值。

此帖出自stm32/stm8论坛

点评

不明白修改哪里,不只是这个项目这样,其它的项目也是这样  详情 回复 发表于 6 天前

回复

2248

帖子

2

TA的资源

五彩晶圆(中级)

lugl4313820 发表于 2023-5-24 15:36 或者说是一进去后,初始化i2c,他就显示超时了,你可以在超时判断那里加修改超时的初始值。

不明白修改哪里,不只是这个项目这样,其它的项目也是这样

此帖出自stm32/stm8论坛

点评

进去看一下,卡死在哪里了,就知道了呀。  详情 回复 发表于 6 天前

回复

3787

帖子

3

TA的资源

版主

bigbat 发表于 2023-5-24 17:23 不明白修改哪里,不只是这个项目这样,其它的项目也是这样

进去看一下,卡死在哪里了,就知道了呀。

此帖出自stm32/stm8论坛

回复

6073

帖子

18

TA的资源

五彩晶圆(中级)

不会吧,stm32的i2c还有问题?这不是很多很多年前的坑了吗

此帖出自stm32/stm8论坛
个人签名

默认摸鱼,再摸鱼。2022、9、28


回复

2248

帖子

2

TA的资源

五彩晶圆(中级)

不知道是哪里的问题,因为是在RTOS非常难搞。

此帖出自stm32/stm8论坛

回复

2449

帖子

1

TA的资源

版主

如果您需要查看本帖隐藏内容,请登录或者注册
此帖出自stm32/stm8论坛

点评

是升级的I2C总线,主要是延用了两条数据线的设计,放宽了脉冲的要求,加入了交互指令,加强了对话周期  详情 回复 发表于 5 天前

回复

2248

帖子

2

TA的资源

五彩晶圆(中级)

如果您需要查看本帖隐藏内容,请登录或者注册
此帖出自stm32/stm8论坛

回复
您需要登录后才可以回帖 登录 | 注册

相关帖子
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/8 下一条
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2023 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表