RT-Thread Studio学习(十一)IIC

  • 一、简介
  • 二、新建RT-Thread项目并使用外部时钟
  • 三、设置AT24Cxx的驱动框架
  • 四、驱动代码移植
  • 五、测试
  • 六、总结

一、简介

本文将基于STM32F407ZGT芯片介绍如何在RT-Thread Studio开发环境下访问AT24C256模块。

  • 操作系统:WIN10 x64
  • 硬件电路:正点原子探索者开发板,主芯片为STM32F407ZGT6
  • 软件开发环境:STM32CubeMX v6.3.0,RT-Thread Studio v2.2.4

二、新建RT-Thread项目并使用外部时钟

详细步骤参考文档《RT-Thread Studio学习(一)使用外部时钟系统》。
在STM32CubeMX中仅仅启用了USART1串口,配置了RCC晶体振和SYS下载方式。

三、设置AT24Cxx的驱动框架

查看原理图

在RT-Thread Studio的RT-Thread settings中,添加软件包at24cxx,再开启软件模拟I2C

根据开发板原理图,在board.h文件中,修改相应代码

/*#define BSP_USING_I2C1*/
#define BSP_USING_I2C1
#ifdef BSP_USING_I2C1
#define BSP_I2C1_SCL_PIN    GET_PIN(D, 6)
#define BSP_I2C1_SDA_PIN    GET_PIN(D, 7)
#endif

四、驱动代码移植

打开工程目录下的packagesat24cxx-latestat24cxx.h,修改第34-36行代码:

#ifndef EE_TYPE
#define EE_TYPE     AT24C256
#endif


在工程目录下的applications文件夹下添加文件hw_at24cxx.hhw_at24cxx.c
hw_at24cxx.h

#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_ */

hw_at24cxx.c

#include <hw_at24cxx.h>
#include "at24cxx.h"#define AT24CXX_ADDR (0xA0 >> 1)        //A0 A1 A2 connect  GND
#define AT24Cxx_I2C_NAME        "i2c1"  /* PWM设备名称 */struct at24cxx_device *at24cxx_dev;void hw_at24cxx_init(void)
{at24cxx_dev = at24cxx_init(AT24Cxx_I2C_NAME,AT24CXX_ADDR);
}void hw_at24cxx_prog(void)
{rt_uint8_t buff[2]={55,66};at24cxx_write(at24cxx_dev,0x00,buff,2);buff[0] = 0;buff[1] = 0;rt_thread_mdelay(10);at24cxx_read(at24cxx_dev,0x00,buff,2);rt_kprintf("buff[0] = %d\n buff[1] = %d\n",buff[0],buff[1]);
}

修改main.c的代码为:

main.c

#include <rtthread.h>#define DBG_TAG "main"
#define DBG_LVL DBG_LOG
#include <rtdbg.h>int main(void)
{int count = 1;LOG_D("Hello RT-Thread!");hw_at24cxx_init();while (1){hw_at24cxx_prog();rt_thread_mdelay(1000);}return RT_EOK;
}

五、测试


六、总结

本文仅仅搭建了能够使用的IIC驱动框架和代码,需要更多实验内容可以灵活使用官方函数:

extern at24cxx_device_t at24cxx_init(const char *i2c_bus_name, uint8_t AddrInput);
extern rt_err_t at24cxx_read(at24cxx_device_t dev, uint32_t ReadAddr, uint8_t *pBuffer, uint16_t NumToRead);
extern rt_err_t at24cxx_write(at24cxx_device_t dev, uint32_t WriteAddr, uint8_t *pBuffer, uint16_t NumToWrite);
extern rt_err_t at24cxx_page_read(at24cxx_device_t dev, uint32_t ReadAddr, uint8_t *pBuffer, uint16_t NumToRead);
extern rt_err_t at24cxx_page_write(at24cxx_device_t dev, uint32_t WriteAddr, uint8_t *pBuffer, uint16_t NumToWrite);

RT-Thread Studio学习(十一)IIC相关推荐

  1. RT Thread Studio 配置IIC并读取AS5600角度

    RT Thread Studio 配置IIC并读取AS5600角度 一.RT Thread Studio 配置IIC 1.在RT Thread Seting 中开启IIC功能 并保存 一定要保存才能更 ...

  2. rt thread studio使用QBOOT和片外flash实现OTA升级

    我们这里要使用单片机外部flash作为OTA的下载分区,外部flash硬件连接关系 PB3-->SPI3_CLK PB4-->SPI3_MISO PB5-->SPI3_MOSI PE ...

  3. RT Thread利用STM32CUBEMX和RT Thread studio来创建模板工程

    (1)RT Thread利用STM32CUBEMX来创建模板工程 1.参考文档: 基于 CubeMX 移植 RT-Thread Nano:RT-Thread 文档中心 注意:串口2必须使能异步模式(启 ...

  4. STM32 + RT Thread OS 学习笔记[五]

    1.  触摸屏驱动 触摸屏驱动的原理非常简单,从硬件得到坐标数据,数据加工(适配屏幕分辨率,偏移量调整),最后调用rtgui_server_post_event()函数向GUI服务端发送坐标信息. 奋 ...

  5. xpt 2046的触摸屏 rt thread设备驱动框架

    1 基于rtt 开发触摸屏驱动 准备使用rtt 框架 , 驱动xpt 2046的触摸屏, 翻阅大量资料发现, 大部分文章强调的是时序图, 而且很多代码要么直接操作寄存器, 要么是io 口模拟, 只能用 ...

  6. 使用RT Thread设备框架封装一个I2C设备——DS3231

    使用RT Thread设备框架封装一个I2C设备--DS3231 前言 ENV配置 I2C测试 将ds3231封装成一个字符设备 结语 前言 学习rt thread的I2C的时候,恰巧手上的板子留了d ...

  7. Android studio 学习 之打包

    Andriod studio 学习 之打包 Key store path : 签名文件路径 Password : 签名密码 Confirm : 确认密码 Alias : 别名 Validity ( y ...

  8. Android OpenGL ES 学习(十一) –渲染YUV视频以及视频抖音特效

    OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学 ...

  9. 关于RT thread系统节拍时钟的配置

    关于RT thread系统节拍时钟的配置                  -----本文基于rt-thread-3.1.3版本编写 首先,使用RTthread OS时,要配置(或者明白)它的系统节拍 ...

最新文章

  1. TCP/IP 协议简单分析
  2. 5中打开safari_iOS13版Safari浏览器新功能上线:可调节上传照片大小
  3. 为什么梯度下降法对于非线性可分数据有效
  4. 前端学习(3320):undefine和null 2
  5. HTML 5 服务器发送事件
  6. 从零开始学架构2 - 高性能篇
  7. Git-简单安装与使用
  8. 中国科学院计算机报录比,中科院报录比详情 几条择校建议 - 考研 - 小木虫 - 学术 科研 互动社区...
  9. 几种无线通讯介绍与比较(蓝牙,WiFi,IrDA,NFC,Zigbee,UWB)
  10. 三层交换机静态路由VLAN配置实例(华为)
  11. [幽默小故事大道理]励志幽默小故事大道理20个
  12. 计算机无法安装64位操作系统,细说64位电脑怎么安装32位系统
  13. 奖励补贴有点多!武汉市大健康和生物技术产业发展奖励措施解读
  14. Redis核心技术与实战-学习笔记(二十九):Redis并发控制
  15. Python数字拆分
  16. ERIC6 打开项目报错
  17. ultraiso制作u盘启动盘教程
  18. 作业2:简答题、编程实践(简单计算器)、思考题
  19. 叙述两个计算机应用,计算机应用基础模拟试卷2
  20. 计算一个字符串中字母的个数

热门文章

  1. 我的第一个油猴脚本--微博超话自动签到
  2. 新建word文档没保存能恢复吗(已有579人收藏)
  3. 微信电子健康卡——身份证照片OCR接口
  4. 7-Java 特性和优势
  5. 兴寿镇“春踏青,兴寿行”特色旅游线路点靓辛庄
  6. 软件开发工具下载地址
  7. 分享一个C语言矿井逃生迷宫小游戏【附源码】
  8. luoguP1196 银河英雄传说(并查集)
  9. 仓库无证如何处罚_无证经营一般是怎么处罚的啊
  10. [bzoj1233]干草堆tower