RN8209 RN8302 spi驱动和校表程序STM32

/***************************************
* FILENAME: rn8209.c
* PURPOSE:  RN8209 Metering Chip Driver
* COPYRIGHT: (c) 2019-2020 by e-Design Co., Ltd.
* DATE: 2020-06-11
* VERSION: 1.0
***************************************/

#include "rn8209.h"

// 定义一些宏,用于控制芯片的引脚操作
#define PinWrite_RN8209CS1(x) (x ? (HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_SET)) : (HAL_GPIO_WritePin(GPIOB, GPIO_PIN_12, GPIO_PIN_RESET)))
#define PinMode_MISO2(x) (x ? (GPIOB->MODER |= GPIO_MODER_MODER14_0) : (GPIOB->MODER &= ~GPIO_MODER_MODER14_0))
#define PinPullUp_MISO2(x) (x ? (GPIOB->PUPDR |= GPIO_PUPDR_PUPDR14_0) : (GPIOB->PUPDR &= ~GPIO_PUPDR_PUPDR14_0))
#define PinWrite_MISO2(x) (x ? (HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_SET)) : (HAL_GPIO_WritePin(GPIOB, GPIO_PIN_14, GPIO_PIN_RESET)))
#define PinRead_MISO2() (HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_14))

// 向RN8209芯片写入一个字节的数据
static void fnSpi2_WriteByte(u8 Dat)
{
   
  HAL_SPI_Transmit(&hspi2, &Dat, 1, 1000);
}

// 从RN8209芯片读取一个字节的数据
static u8 fnSpi2_ReadByte(void)
{
   
  u8 Dat;
  HAL_SPI_Receive(&hspi2, &Dat, 1, 1000);
  return Dat;
}

// 向RN8209芯片写入数据
void fnRn8209_Write(u16 Dst, u8 *Src, u16 DatLen, u16 Repeat)
{
   
  u16 i;
  PinMode_MISO2(0);  // 设置MISO引脚为输出模式
  PinPullUp_MISO2(0)

你可能感兴趣的:(stm32,单片机,嵌入式硬件)