测试介绍
为了测试STM32U083的I2C性能,本次安排的测试使用sht21作为测试设备。sht21是一款较为流行的空气温湿度传感器,sht21使用I2C总线接口与MCU通讯。该设备的I2C接口较为标准,符合I2C规范。
开发板使用NUCLEO-U083RC,开发板带有4个I2C接口,每个接口均支持I2C Master模式。速度支持,超高速、高速、普通模式。带有7个异步/同步uart串行接口,3个是低功耗模式,4个为普通模式。
测试硬件连接
PC接口使用UART2 接口,数据位:8bit,速率:115200,停止位:1,校验:无
I2C接口,接口:I2C1, 引脚:PB8 SCL,PB9 SDA,速率:100K,地址位:7bit
测试设置:
测试设置,选择开发板类型: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)); |
测试过程:
从获取数据
和成品的测试相差不大。
大佬这是直接调库的吧,感谢分享源码!