STM32 GPIO模拟SPI操作AD7192

这篇博客介绍了如何使用STM32的GPIO模拟SPI接口操作AD7192芯片,详细提供了AD7192Driver.h和AD7192Driver.c的源码,并分享了个人在学习和修改过程中的经验,便于读者参考和讨论。
摘要由CSDN通过智能技术生成

第一部分 :STM32 GPIO模拟SPI

本篇内容参考了网上很多文章和官方源码,经过自己学习和修改,拿出来给大家参考参考,希望有所帮助。
下面直接贴源码,上干货,有什么意见和建议直接留言。

头文件AD7192Driver.h

/* ----------------------- Defines ------------------------------------------*/
#define AD7192_CS_Pin              GPIO_PIN_15   //片选引脚,低电平有效
#define AD7192_CS_GPIO_Port        GPIOA
#define AD7192_SCLK_Pin            GPIO_PIN_10   //串行时钟
#define AD7192_SCLK_GPIO_Port      GPIOC
#define AD7192_DOUT_Pin            GPIO_PIN_11   //AD7192输出引脚
#define AD7192_DOUT_GPIO_Port      GPIOC
#define AD7192_DIN_Pin             GPIO_PIN_12   //AD7192输入引脚
#define AD7192_DIN_GPIO_Port       GPIOC

/* AD7192_CS 低电平有效*/
#define AD7192_CS_ENABLE()         HAL_GPIO_WritePin(AD7192_CS_GPIO_Port, AD7192_CS_Pin, GPIO_PIN_RESET)
#define AD7192_CS_DISABLE()        HAL_GPIO_WritePin(AD7192_CS_GPIO_Port, AD7192_CS_Pin, GPIO_PIN_SET)
/* AD7192_SCL 高电平空闲*/
#define AD7192_SCLK_H         	   HAL_GPIO_WritePin(AD7192_SCLK_GPIO_Port, AD7192_SCLK_Pin, GPIO_PIN_SET)    
#define AD7192_SCLK_L         	   HAL_GPIO_WritePin(AD7192_SCLK_GPIO_Port, AD7192_SCLK_Pin, GPIO_PIN_RESET)
/* AD7192_RDY_STATE 高电平空闲*/
#define AD7192_RDY_STATE           HAL_GPIO_ReadPin(AD7192_DOUT_GPIO_Port,AD7192_DOUT_Pin)

/* AD7192驱动函数声明*/
void  STM32_AD7192_Config(void);//GPIO初始化
void  STM32SpiOperation(unsigned char* WriteBuffer, unsigned char *ReadBuffer, unsigned char NumberOfByte);//GPIO模拟SPI操作AD
unsigned short Get_ADTemprate(void);//AD芯片温度采集
void  AD7192_Unipolar_Multichannel_Config(void);//多路单端输入AD采集配置

源文件AD7192Driver.c

/* ----------------------- System incldues ----------------------------------*/
#include "stm32f1xx_hal.h"

/* ----------------------- AD7192 incldues-----------------------------------*/
#include "AD7192.h"
#include "AD7192Driver.h"

/* ----------------------- Defines ------------------------------------------*/

/* ----------------------- Variables ----------------------------------------*/

/*STM32与AD7192通讯管脚配置函数*/

void STM32_AD7192_Config(void)
{
   
    GPIO_InitTypeDef GPIO_InitStruct = {
   0};/*定义一个GPIO_InitTypeDef类型的结构体*/

    /* GPIO Ports Clock Enable */
    __HAL_RCC_GPIOC_CLK_ENABLE();
    __HAL_RCC_GPIOA_CLK_ENABLE();

    //定义输入管脚
    GPIO_InitStruct.Pin = AD7192_DOUT_Pin;/*选择要控制的GPIO引脚,即PC11,对7192来说是数据输出端,对STM32就应是输入*/
    GPIO_InitStruct.Mode = GPIO_MODE_INPUT; 
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值