[讨论] 【NUCLEO-U083RC】I2C总线设备的兼容性测试

bigbat   2024-6-1 18:50 楼主

测试介绍

为了测试STM32U083的I2C性能,本次安排的测试使用sht21作为测试设备。sht21是一款较为流行的空气温湿度传感器,sht21使用I2C总线接口与MCU通讯。该设备的I2C接口较为标准,符合I2C规范。

image-20240601184959-1.jpeg  

开发板使用NUCLEO-U083RC,开发板带有4个I2C接口,每个接口均支持I2C Master模式。速度支持,超高速、高速、普通模式。带有7个异步/同步uart串行接口,3个是低功耗模式,4个为普通模式。

测试硬件连接

PC接口使用UART2 接口,数据位:8bit,速率:115200,停止位:1,校验:无

I2C接口,接口:I2C1, 引脚:PB8 SCL,PB9 SDA,速率:100K,地址位:7bit

image-20240601184959-2.png  

测试设置:

image-20240601184959-3.png  

测试设置,选择开发板类型:NUCLEO-U083RC,资源使用I2C1、usart2、led4资源。

本次测试,使用USART接口输出sht21的测试结果。Led4作为测试运行指示,如果出现错误,程序自动转到LED4常亮状态。程序项目类型使用,keil类型。

测试代码

Sht21的程序驱动代码,由两部分组成,一部分是设置和初始化代码。另一部分是功能代码。

SHT2x_Init(&hi2c1);

SHT2x_SetResolution(RES_14_12);

引用代码如下:

unsigned char buffer[100] = { 0 };

/* Gets current temperature & relative humidity. */

float cel = SHT2x_GetTemperature(1);

 

/* Converts temperature to degrees Fahrenheit and Kelvin */

float fah = SHT2x_CelsiusToFahrenheit(cel);

float kel = SHT2x_CelsiusToKelvin(cel);

float rh = SHT2x_GetRelativeHumidity(1);

/* May show warning below. Ignore and proceed. */

printf("%d.%d, %d.%d , %d.%d K, %d.%d%% RH\r\n",

       SHT2x_GetInteger(cel), SHT2x_GetDecimal(cel, 1),

       SHT2x_GetInteger(fah), SHT2x_GetDecimal(fah, 1),

       SHT2x_GetInteger(kel), SHT2x_GetDecimal(kel, 1),

       SHT2x_GetInteger(rh), SHT2x_GetDecimal(rh, 1));

 

 

测试过程:

 

image-20240601184959-4.png  

 

从获取数据

image-20240601185000-5.png  

和成品的测试相差不大。

 

回复评论 (3)

sht21.zip (1000.73 KB)
(下载次数: 1, 2024-6-1 18:53 上传)
配套的sht21程序
点赞  2024-6-1 18:54

大佬这是直接调库的吧,感谢分享源码!

点赞  2024-6-1 22:42

感谢楼主分享的技术内容,非常详细,值得收藏学习,感谢分享

点赞  2024-6-2 07:39
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复