【使用C++开发MCU】02-IIC实例之读取温度

本文介绍了使用C++在NXP S32K1 MCU上开发IIC驱动,以读取TI TMP101温度传感器为例。通过构建CI2C和CTmp类,实现了IIC驱动和温度传感器驱动,并在App应用中读取温度。文章探讨了为什么选择C++进行MCU开发,并分享了软件架构和工程结构的设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么使用C++进行MCU开发

我从18年开始在STM32等上使用C++编程,在医疗器械行业进行IVD仪器开发,在此之前的项目开发中我是使用C语言。初次在MCU上使用C++,我有很多疑惑:C语言不挺好的吗?MCU上居然可以使用C++? 为什么选择C++?

工作七八年了,以前都没写过博客,现在开始记录一点东西吧!

尽管18年时使用C语言进行MCU开发已经相当熟练,但C++我是刚入茅庐,才会有那些疑问,并还专门请教了部门经理。这几年,随着工作经验的积累,愈发的认通C++在产品开发中的优点,那些疑惑也随之解开。
使用C++进行MCU开发,不代表只用C++,C语言也是可以混用的,特别是原厂提供的一些SDK,可以用C++封装这层SDK,后续、上层驱动业务进行C++开发。

场景描述

这里使用NXP的S32K1系列MCU,使用TI的TMP101温度传感器做示例。开发环境使用NXP的S32DS,使用其C库SDK,编程语言为C++。为了使用C++演示,建立工程时选择C++语言,不选择SDK,SDK部分由我们自行导入工程。
原理框图

软件架构

这里进行演示,架构较为简单,在SDK基础上封装IIC驱动CI2C(C++),基于IIC驱动实现TMP101驱动CTmp(C++),板级相关时钟、引脚封装在CBoard中(C++),最后App中的main.cpp实现读取温度。
软件架构

工程结构

基于上述软件架构[在SDK基础上封装IIC驱动CI2C(C++),基于IIC驱动实现TMP101驱动CTmp(C++),板级相关时钟、引脚封装在CBoard中(C++),最后App中的main.cpp实现读取温度。]实现工程结构:
工程结构

CI2C类

参见NXP S32K1 IIC Driver接口与实现实现该C++类。

头文件:CI2C.h中主要实现初始化、读从机数据、写从机数据三大接口,为了省事,将板机相关的从机枚举、从机地址和波特率等也塞在了这里。

#ifndef CI2C_H_
#define CI2C_H_

#include "stdint.h"
#include "lpi2c.h"

class CI2C{
   

public:
	void init(void);
	void deinit(void);
	bool read(uint8_t slave, uint8_t addr, uint8_t *data, uint16_t len);
	bool write(uint8_t slave, uint8_t addr, const uint8_t *data, uint16_t len);
	static CI2C *getInstance(void);

	enum SLAVE
	{
   
			SLAVE_TMP101 = 0x00,
			SLAVE_COUNT
	};

private:
	static CI2C *pI2CInstance;
	void config(uint8_t slave);
	const uint32_t I2C_NO = INST_LPI2C;
	const 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值