/***************************************
* 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
RN8209 RN8302 spi驱动和校表程序STM32
最新推荐文章于 2025-11-04 11:02:58 发布
这篇博客介绍了如何使用STM32驱动RN8209计量芯片,包括SPI接口的定义和操作函数,以及详细的校表程序,涉及单相RN8209的校正和相位校正过程,通过读取和写入特定寄存器进行数据处理和计算。

最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



