收到开发板很长时间了,一直没有测试,今天先做个简单的,适应下新的开发方式,以及熟悉下我们的SDK工程。
首先就是需要下在我们的RASC工具。这样就可以生成我们需要的代码了,目前支持,keil,IAR,还有他们家自己的E2 studio。
进去后就是直接建立工程。
然后我们可以看到我们的图形化界面。对MCU也是有部分介绍,其最近出的都是基于M33内核的,其MCU内部外设资源还是很强大的。
之后我们配置我们需要的IIC接口,由于拓展板是直接的全部引出的IO,所以我们可以直接使用的。
然后就是具体配置IIC的功能,我们可以重新命令名字,等配置。
这是我配置好的传感器接口,地址,回调函数等等。
生成的工程也是和其他不同,结构上就源文件就放了一个叫Hal_entry。
#define SHT20_Measurement_RH_HM 0XE5
#define SHT20_Measurement_T_HM 0XE3
float temp1,humi1;
unsigned int timeout_ms = 500;
i2c_master_event_t g_i2c_callback_event;
void i2c_callback (i2c_master_callback_args_t * p_args)
{
g_i2c_callback_event = p_args->event;
}
void sht20_get_value()
{
uint8_t cmd = SHT20_Measurement_T_HM;
uint8_t buff[2],buff1[2];
uint16_t temp,humi=0;
R_IIC_MASTER_Write(&SHT20_ctrl, &cmd, 1 , false);
while ((I2C_MASTER_EVENT_TX_COMPLETE != g_i2c_callback_event) && timeout_ms)
{
R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MILLISECONDS);
timeout_ms--;
}
timeout_ms = 750;
R_BSP_SoftwareDelay(10U, BSP_DELAY_UNITS_MILLISECONDS);
R_IIC_MASTER_Read(&SHT20_ctrl, buff, 2 , false);
while ((I2C_MASTER_EVENT_RX_COMPLETE != g_i2c_callback_event) && timeout_ms)
{
R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MILLISECONDS);
timeout_ms--
}
cmd = SHT20_Measurement_RH_HM;
R_IIC_MASTER_Write(&SHT20_ctrl, &cmd, 1 , false);
while ((I2C_MASTER_EVENT_TX_COMPLETE != g_i2c_callback_event) && timeout_ms)
{
R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MILLISECONDS);
timeout_ms--;
}
timeout_ms = 750;
R_BSP_SoftwareDelay(10U, BSP_DELAY_UNITS_MILLISECONDS);
R_IIC_MASTER_Read(&SHT20_ctrl, buff1, 2 , false);
while ((I2C_MASTER_EVENT_RX_COMPLETE != g_i2c_callback_event) && timeout_ms)
{
R_BSP_SoftwareDelay(1U, BSP_DELAY_UNITS_MILLISECONDS);
timeout_ms--;
}
timeout_ms = 750;
temp=(uint16_t)buff[0];
temp=temp<<8;
temp=buff[1]|temp;
temp1=-46.85+175.72*((float)temp/65536);
humi=(uint16_t)buff1[0];
humi=humi<<8;
humi=buff1[1]|humi;
humi1=-6+125*((float)humi/65536);
}
以上是我们的源码。
进入仿真后可以查看变量。
数值都是正常的。
接线示意:
|