RN8209 RN8302 spi驱动和校表程序STM32

这篇博客介绍了如何使用STM32驱动RN8209计量芯片,包括SPI接口的定义和操作函数,以及详细的校表程序,涉及单相RN8209的校正和相位校正过程,通过读取和写入特定寄存器进行数据处理和计算。

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

/***************************************
* 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

章鱼哥嵌入式开发

坚持不易,你们的鼓励是我的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值