查看: 783|回复: 4

RA2L1开发板I2C读取DHTC12温湿度

[复制链接]

5

主题

18

帖子

4937

积分

论坛元老

Rank: 8Rank: 8

积分
4937
发表于 2023-6-1 16:07:36 | 显示全部楼层 |阅读模式
FSP配置I2C引脚和参数


驱动代码修改
  1. #include "r_iic_master.h"

  2. #define DHTC12_I2C_ADDR 0x44
  3. static uint16_t HumA,HumB;

  4. i2c_master_event_t g_i2c_callback_event;

  5. /* Callback function */
  6. void i2c_master_callback(i2c_master_callback_args_t *p_args)
  7. {
  8.     g_i2c_callback_event = p_args->event;
  9. }

  10. void yuyy_dhtc12_iic_init(void)
  11. {
  12.         R_IIC_MASTER_Open(&g_i2c_master0_ctrl,&g_i2c_master0_cfg);
  13.     R_IIC_MASTER_SlaveAddressSet(&g_i2c_master0_ctrl,DHTC12_I2C_ADDR,I2C_MASTER_ADDR_MODE_7BIT);
  14. }


  15. uint8_t yuyy_dhtc12_iic_senddatas(uint8_t devaddr,uint16_t regaddr,uint8_t regaddrlen,uint8_t *datas,uint8_t datalen)
  16. {
  17.     fsp_err_t err = FSP_SUCCESS;
  18.     uint8_t sdata[8] = {0},i=0;
  19.     R_IIC_MASTER_SlaveAddressSet(&g_i2c_master0_ctrl,devaddr,I2C_MASTER_ADDR_MODE_7BIT);
  20.     if(regaddrlen == 1)
  21.     {
  22.         sdata[0] = regaddr&0xFF;
  23.         i = 1;
  24.     }
  25.     else if(regaddrlen == 2)
  26.     {
  27.         sdata[0] = (regaddr>>8)&0xFF;
  28.         sdata[1] = regaddr&0xFF;
  29.         i = 2;
  30.     }
  31.     while(i<regaddrlen+datalen)
  32.     {
  33.         sdata[i] = datas[i-regaddrlen];
  34.         i++;
  35.     }
  36.     err = R_IIC_MASTER_Write(&g_i2c_master0_ctrl,sdata,i,false);
  37.     i = 0;
  38.     while ((I2C_MASTER_EVENT_TX_COMPLETE != g_i2c_callback_event) && i<3)
  39.     {
  40.         R_BSP_SoftwareDelay(5, BSP_DELAY_UNITS_MILLISECONDS);
  41.         i++;
  42.     }
  43.     if(i == 3)
  44.         err = FSP_ERR_TIMEOUT;
  45.         return err;
  46. }
  47. uint8_t yuyy_dhtc12_iic_readdatas(uint8_t devaddr,uint16_t regaddr,uint8_t regaddrlen,uint8_t *datas,uint8_t datalen)
  48. {
  49.         fsp_err_t err = FSP_SUCCESS;
  50.     uint8_t sdata[2] = {0},i=0;
  51.     R_IIC_MASTER_SlaveAddressSet(&g_i2c_master0_ctrl,devaddr,I2C_MASTER_ADDR_MODE_7BIT);
  52.     if(regaddrlen == 1)
  53.     {
  54.         sdata[0] = regaddr&0xFF;
  55.         i = 1;
  56.     }
  57.     else if(regaddrlen == 2)
  58.     {
  59.         sdata[0] = (regaddr>>8)&0xFF;
  60.         sdata[1] = regaddr&0xFF;
  61.         i = 2;
  62.     }
  63.     err = R_IIC_MASTER_Write(&g_i2c_master0_ctrl,sdata,i,true);
  64.     i = 0;
  65.     while ((I2C_MASTER_EVENT_TX_COMPLETE != g_i2c_callback_event) && i<3)
  66.     {
  67.         R_BSP_SoftwareDelay(5, BSP_DELAY_UNITS_MILLISECONDS);
  68.         i++;
  69.     }
  70.     if(i == 3)
  71.         err = FSP_ERR_TIMEOUT;
  72.     if(err == FSP_SUCCESS)
  73.     {
  74.         err = R_IIC_MASTER_Read(&g_i2c_master0_ctrl,datas,datalen,false);
  75.         i = 0;
  76.         while ((I2C_MASTER_EVENT_RX_COMPLETE != g_i2c_callback_event) && i<3)
  77.         {
  78.             R_BSP_SoftwareDelay(5, BSP_DELAY_UNITS_MILLISECONDS);
  79.             i++;
  80.         }
  81.         if(i == 3)
  82.             err = FSP_ERR_TIMEOUT;
  83.     }
  84.     return err;
  85. }
  86. void yuyy_dhtc12_delayms(uint16_t ms)
  87. {
  88.         R_BSP_SoftwareDelay(ms,BSP_DELAY_UNITS_MILLISECONDS);
  89. }
复制代码
运行效果

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

38

主题

126

帖子

9165

积分

论坛元老

Rank: 8Rank: 8

积分
9165
发表于 2023-6-2 05:56:00 | 显示全部楼层

大佬进展神速呀!
回复

使用道具 举报

0

主题

21

帖子

4753

积分

论坛元老

Rank: 8Rank: 8

积分
4753
发表于 2023-6-6 09:02:51 | 显示全部楼层

学习一下
回复

使用道具 举报

0

主题

2

帖子

22

积分

新手上路

Rank: 1

积分
22
发表于 2023-6-7 18:20:10 | 显示全部楼层

楼主好棒!赞一个!
回复

使用道具 举报

7

主题

37

帖子

3171

积分

论坛元老

Rank: 8Rank: 8

积分
3171
发表于 2023-6-14 08:41:09 | 显示全部楼层

大佬厉害厉害厉害
回复

使用道具 举报

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

本版积分规则

用户排行榜

RA助手

主题: 116帖子:133精华:0

RA_Lance

主题: 92帖子:131精华:9

lugl

主题: 38帖子:126精华:0

xujiwei263

主题: 16帖子:73精华:0

books咦

主题: 11帖子:11精华:2

Juggernaut

主题: 9帖子:93精华:0
快速回复 返回顶部 返回列表