RT-Thread Studio与CubeMX联合编程之rtthread stm32h743的使用(十)i2c设备使用

我们要在rtthread studio 开发环境中建立stm32h743xih6芯片的工程。我们使用一块stm32h743及fpga的核心板完成相关实验,核心板如图:在这里插入图片描述
在这里插入图片描述
1.建立新工程,选择相应的芯片型号及debug引脚及调试器
在这里插入图片描述
2.打开cubemux,设置外部时钟及串口外设,其余设置参照前面rtthread stm32h743的使用(一)新工程建立,使能两个串口,串口1为调试串口,串口2为我们的测试串口。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.设置i2c引脚及参数 根据原理图scl为ph7,sda为ph8,如下图:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
4.设置系统时钟,如下图:
在这里插入图片描述
在这里插入图片描述
5生成工程,如下图:在这里插入图片描述
在这里插入图片描述
6.生成工程后一定要关闭cubemux,如果点击close软件没有关闭,就在右上角x掉,直接关闭,否则生成的工程会有异常:
在这里插入图片描述
在这里插入图片描述
7.编译工程,如下图,将大写的改为小写,再编译就没有报错了:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
8.打开工程后在工程drive文件夹下的board.h中添加要使用的串口设备和i2c设备如图,我们使用的串口1,和i2c3 如图:
在这里插入图片描述
9.添加驱动框架和软件包:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
9.保存编译下,可以看到软件包已经添加到工程中了:
在这里插入图片描述
在这里插入图片描述
10.编译无误,在软件包的.h文件中更改芯片型号:
在这里插入图片描述
11.添加测试文件,代码如下:
在这里插入图片描述
#include <hw_at24cxx.h>
#include “at24cxx.h”

#define AT24CXX_ADDR (0xA0 >> 1) //A0 A1 A2 connect GND
#define AT24Cxx_I2C_NAME “i2c3” /* PWM设备名称 */

struct at24cxx_device *at24cxx_dev;

void hw_at24cxx_init(void)
{
at24cxx_dev = at24cxx_init(AT24Cxx_I2C_NAME,AT24CXX_ADDR);
}
#define buff_size 250
void hw_at24cxx_prog(void)
{
rt_uint8_t j;
rt_uint8_t buff[buff_size]={0};
for(j=0;j<buff_size;j++)
{
buff[j]=5;
}
at24cxx_write(at24cxx_dev,0x00,buff,buff_size);
for(j=0;j<buff_size;j++)
{
buff[j]=0;
}
rt_thread_mdelay(10);
at24cxx_read(at24cxx_dev,0x00,buff,buff_size);
for(j=0;j<buff_size;j++)
{
rt_kprintf(“buff[%d] = %d\n”,j,buff[j]);
}
}

/*

  • Copyright © 2006-2021, RT-Thread Development Team
  • SPDX-License-Identifier: Apache-2.0
  • Change Logs:
  • Date Author Notes
  • 2024-06-17 58381 the first version
    */
    #ifndef APPLICATIONS_HW_AT24CXX_H_
    #define APPLICATIONS_HW_AT24CXX_H_

extern void hw_at24cxx_init(void);
extern void hw_at24cxx_prog(void);

#endif /* APPLICATIONS_HW_AT24CXX_H_ */

12.在主函数中添加初始化和调用函数,代码如下:
#include <rtthread.h>
#include “hw_at24cxx.h”
#define DBG_TAG “main”
#define DBG_LVL DBG_LOG
#include <rtdbg.h>

int main(void)
{
int count = 1;
hw_at24cxx_init();
while (count++)
{
LOG_D(“Hello RT-Thread-test-eeprom!”);
rt_thread_mdelay(1000);
hw_at24cxx_prog();
}

return RT_EOK;

}
13.打开串口助手,查看打印内容:
在这里插入图片描述
13.打开串口助手,更改写入eeprom中的值,再查看打印内容:
在这里插入图片描述
在这里插入图片描述
可以看到写入的值与读出的值一致,eeprom的读写就可以了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值