首页 > 其他分享 >HC32L130读取SD3078时间

HC32L130读取SD3078时间

时间:2024-06-22 14:30:46浏览次数:24  
标签:SCL 读取 HC32L130 void GpioInitStruct SDA SD3078 I2C define

一.SD3078电路图

二.HC32L130 IO模拟IIC

 1.app_i2c_gpio.h

/*****************************************************************************/
/** \file app_i2c_gpio.h
 **
 ** Headerfile for lcd functions
 **  
 **
 ** History:
 **   - 2024-06-21   马天义 微信:terrymty  电话:17785153612    1.0 Version
 **
 *****************************************************************************/

#ifndef __APP_I2C_GPIO_H__ 
#define __APP_I2C_GPIO_H__ 
/*****************************************************************************
 * Include files
 *****************************************************************************/
#include "ddl.h"
#ifdef __cplusplus
extern "C"
{
#endif


#define I2C_WR	0		/* 写控制bit */
#define I2C_RD	1		/* 读控制bit */



void App_InitI2C(void);
void InitSDAInput(void);
void InitSDAOutput(void);
void InitSCLOutput(void);
void i2c_Start(void);
void i2c_Stop(void);
void i2c_SendByte(uint8_t _ucByte);
void i2c_writeByte(uint8_t _Address,uint8_t wdata, uint8_t usAddr);
uint8_t i2c_ReadByte(void);
uint8_t i2c_WaitAck(void);
void i2c_Ack(void);
void i2c_NAck(void);
uint8_t i2c_CheckDevice(uint8_t _Address);
uint8_t ee_CheckOk(void);
#ifdef __cplusplus
#endif

#endif /* __APP_I2C_GPIO_H__ */
/******************************************************************************
 * EOF (not truncated)
 *****************************************************************************/



2.app_i2c_gpio.c

#include "app_i2c_gpio.h" 
#include "gpio.h" 

/* 定义I2C总线连接的GPIO端口, 用户只需要修改下面4行代码即可任意改变SCL和SDA的引脚 */

#define RCC_I2C_PORT 	SysctrlPeripheralGpio		/* GPIO端口时钟 */

#define PORT_I2C_SCL	GpioPortA			/* GPIO端口 */
#define PIN_I2C_SCL		GpioPin8		/* GPIO引脚 */

#define PORT_I2C_SDA	GpioPortB			/* GPIO端口 */
#define PIN_I2C_SDA		GpioPin15		/* GPIO引脚 */

#define I2C_SCL_PIN		GpioPin8			/* 连接到SCL时钟线的GPIO */
#define I2C_SDA_PIN		GpioPin15			/* 连接到SDA数据线的GPIO */

/* 定义读写SCL和SDA的宏 */
#define I2C_SCL_1()  Gpio_WriteOutputIO(PORT_I2C_SCL, PIN_I2C_SCL, TRUE)				/* SCL = 1 */
#define I2C_SCL_0()  Gpio_WriteOutputIO(PORT_I2C_SCL, PIN_I2C_SCL, FALSE)				/* SCL = 0 */

#define I2C_SDA_1()  Gpio_WriteOutputIO(PORT_I2C_SDA, PIN_I2C_SDA, TRUE)				/* SDA = 1 */
#define I2C_SDA_0()  Gpio_WriteOutputIO(PORT_I2C_SDA, PIN_I2C_SDA, FALSE)				/* SDA = 0 */

#define I2C_SDA_READ()  (Gpio_GetInputIO(PORT_I2C_SDA,I2C_SDA_PIN) != 0)	/* 读SDA口线状态 */
#define I2C_SCL_READ()  (Gpio_GetInputIO(PORT_I2C_SCL,I2C_SCL_PIN) != 0)	/* 读SCL口线状态 */


/*
*********************************************************************************************************
*	函 数 名: bsp_InitI2C
*	功能说明: 配置I2C总线的GPIO,采用模拟IO的方式实现
*	形    参:  无
*	返 回 值: 无
*********************************************************************************************************
*/
void App_InitI2C(void)
{
   InitSCLOutput();
   InitSDAOutput();

		/* 给一个停止信号, 复位I2C总线上的所有设备到待机模式 */
		i2c_Stop();	
}
void InitSDAInput(void)
{    
    stc_gpio_cfg_t         GpioInitStruct;
    DDL_ZERO_STRUCT(GpioInitStruct);
    
    //使能GPIO外设时钟
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);  
   	///< 端口方向配置->输入
    GpioInitStruct.enDir = GpioDirIn;
    ///< 端口驱动能力配置->高驱动能力
    GpioInitStruct.enDrv = GpioDrvL;
    ///< 端口上下拉配置->无上下拉   
	  GpioInitStruct.enPu = GpioPuDisable; ///< 端口上下拉配置->无
    GpioInitStruct.enPd = GpioPdDisable;      
    ///< 端口开漏输出配置->开漏输出关闭
   // GpioInitStruct.enOD = GpioOdEnable;
    ///< 端口输入/输出值寄存器总线控制模式配置->AHB
    GpioInitStruct.enCtrlMode = GpioAHB; 
    Gpio_Init(PORT_I2C_SDA,PIN_I2C_SDA,&GpioInitStruct);               ///< 端口初始化

}
void InitSDAOutput(void)
{
		  stc_gpio_cfg_t         GpioInitStruct;
    DDL_ZERO_STRUCT(GpioInitStruct);
    
    //使能GPIO外设时钟
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);  
   	///< 端口方向配置->输入
    GpioInitStruct.enDir = GpioDirOut;
    ///< 端口驱动能力配置->高驱动能力
    GpioInitStruct.enDrv = GpioDrvH;
    ///< 端口上下拉配置->无上下拉   
	  GpioInitStruct.enPu = GpioPuDisable; ///< 端口上下拉配置->无
    GpioInitStruct.enPd = GpioPdDisable;      
    ///< 端口开漏输出配置->开漏输出关闭
    GpioInitStruct.enOD = GpioOdEnable;
    ///< 端口输入/输出值寄存器总线控制模式配置->AHB
    GpioInitStruct.enCtrlMode = GpioAHB;
    Gpio_Init(PORT_I2C_SDA, PIN_I2C_SDA, &GpioInitStruct);
	  Gpio_WriteOutputIO(PORT_I2C_SDA, PIN_I2C_SDA, TRUE

标签:SCL,读取,HC32L130,void,GpioInitStruct,SDA,SD3078,I2C,define
From: https://blog.csdn.net/mtyterry/article/details/139855122

相关文章

  • C#——文件读取IO操作File类详情
    文件读取操作IO类就是对应文件的操作的类I/O类包含各种不同的类用于执行各种文件操作,创建文件删除文件读写文件常用的类:        File处理文件操作的类        FilleStream用于文件当中任何位置的读写File类1.文件创建File.Create()在指定路径......
  • python读取excel文件
    在Python中,可以使用pandas库来读取Excel文件。首先,确保安装了pandas和openpyxl(用于处理Excel文件的库):pipinstallpandasopenpyxl以下是使用pandas读取Excel文件的示例代码:importpandasaspd#读取Excel文件df=pd.read_excel('example.xlsx')#显示数据框内容p......
  • 基于STM32F103 HAL库 开发PWM读取
    目录CubeMX配置调试配置​时钟配置​编辑定时器配置打开定时器捕获中断代码readpwm.hreadpwm.cCubeMX配置调试配置时钟配置定时器配置测已知周期的占空比,我们要读取的PWM周期是20ms,于是我设计预分频系数是72-1,自动重装载系数是40000-1,周期是40ms,存在两个完整......
  • 编写一个C程序,使得读取输入的字符串,统计并输出字符串中大写字母、小写字母、数字和其
    #include<stdio.h>#include<string.h>intmain(){   charstr[100];    //赋予字符长度为100的存储空间   inti,uppercase=0,lowpercase=0,number=0,other=0;    //变量初始化   printf("请输入字符串:");   gets(str);    ......
  • 用友Ufida ELTextFile-任意文件读取漏洞
      0x01阅读须知        技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使......
  • java读取wps嵌入式图片思路
     这个只写了思路具体代码在文章最后,不想了解得直接去拿代码了解Excel数据结构    Excel文件格式后缀xls,xlsx其实是一个压缩文件,是由多个文件夹以及xml文件组合为一个文件,xml文件记录了Excel得内容以及样式等信息。加入在桌面新建一个xlsx文件,然后插入一个嵌入......
  • docker 容器中,当需要读取外接usb 设备,每次插拔 sub 设备,设备编号一直变化怎么办?
    docker容器中,当需要读取外接usb设备,每次插拔sub设备,设备编号一直变化怎么办?这会影响程序的读取。因此每次创建容器时候,设备编号就固定在容器中了。比如:在容器中运行:root@h-pc:~/ros_ws#lsusbBus002Device002:ID174c:3074ASMediaTechnologyInc.ASM1074SuperSpee......
  • Spring Cloud Gateway网关下Knife4j文档聚合,以及动态路由的读取和代码配置
    SpringCloudGateway网关下Knife4j文档聚合,以及动态路由的读取和配置一.Knife4j文档聚合1.1基础环境明细1.2集成knife4j1.2.1maven1.2.2yml配置1.2.2.1其他模块配置1.2.2.2manual手动配置模式1.2.2.3discover服务发现模式1.2.2.3==这里请注意==:如果你使用了:S......
  • 0day 未公开 U8+CRM V13-V16.5系统存在任意文件读取漏洞
     0x01阅读须知        技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用......
  • Bat中实现git和Maven环境变量检测,拉取git代码并打包maven项目,读取子目录差异性yml文件
    场景Docker+Jenkins+Pipline实现SpringBoot项目input选择不同差异性yml文件打包、执行sh打包压缩包、使用archiveArtifacts下载制品(jar包、压缩包):https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/139748758上面实现打包后台jar包并选择不同的差异性yml文件打包成......