资源简介
锐能微RN8302电能采集芯片的驱动程序,通过SPI接口进行通信。

代码片段和文件信息
#include “RN8302.h“
uint8_t TX_DATA[10];
uint8_t TX_DATA_CHK[10];
uint16_t RX_DATA_RAM[10];
uint8_t RX_DATA[50];
struct RN_Coefficient sChnlCoef;
void RN8302_Delay(int16_t i)
{
while(i--);
}
//函数说明: 向8302中发送一帧数据,TX_DATA发送缓冲区
//发送数据帧格式为 地址+命令+数据+CS校验
uint32_t TX_frame(uint8_t Num)
{
uint8_t ijiRcscsrTXFLAG;
uint32_t tempTXtempRX;
switch(Num)
{
case 3:tempTX = TX_DATA[2];break; //TX_DATA[0]为地址,TX_DATA[1]为命令,tempTX为数据
case 4:tempTX = (TX_DATA[2]<<8)|TX_DATA[3];break;
case 5:tempTX = (TX_DATA[2]<<16)|(TX_DATA[3]<<8)|TX_DATA[4];break;
default:tempTX = 0; break;
}
TXFLAG = 3; //暂时不懂这个变量的用处,为何要连续发送三次?
SPI_SCSNSET; //开启通讯
// while(TXFLAG)
// {
i=0;
cs=0;
for(;Num>0;Num--) //发送Num个字节(包括地址+命令+数据)
{
TX_ONEBYTE(TX_DATA[i]); //依次发送地址,命令,数据
cs=cs+TX_DATA[i];
i++;
}
cs=~cs; //cs为单字节求和(地址+命令+数据)取反
TX_ONEBYTE(cs); //发送校验字节
if((TX_DATA[0]==0x82)&&(TX_DATA[1]==0x90)&&(TX_DATA[2]==0xFA))
{
TXFLAG = 0;
return(0);
} //如果发送的是复位信号
// j = 0;
// iR = 0;
// csr = 0;
// TX_DATA_CHK[0]=WRCHKREG; //0x8D,保存上一次写入的数据寄存器
// TX_DATA_CHK[1]=0x00|(bank1<<4);
// csr = csr+TX_DATA_CHK[0];
// csr = csr+TX_DATA_CHK[1];
// TX_ONEBYTE(TX_DATA_CHK[0]);
// TX_ONEBYTE(TX_DATA_CHK[1]); //写入地址+命令
// for(j=3;j>0;j--)
// {
// RX_DATA[iR]=RX_ONEBYTE();
// csr=csr+RX_DATA[iR];
// iR++;
// } //该寄存器3个字节
// RX_DATA[iR]=RX_ONEBYTE();
// csr=csr+RX_DATA[iR];//校验字节
// if(csr == 0xFF)
// {
// tempRX = (RX_DATA[0]<<16)|(RX_DATA[1]<<8)|RX_DATA[2];
// if(tempRX == tempTX)
// {
// TXFLAG = 0;
// return(0);
// }
//
// else
// TXFLAG--;
//
// }
// else
// {
// TXFLAG--;
// }
// }
RN8302_Delay(50);
RN8302_Delay(50);
RN8302_Delay(50);
SPI_SCSNCLR; //通讯结束
return(0);
}
//函数说明: 从8302中读取一帧数据,RX_DATA接收缓冲区
uint32_t RX_frame(uint8_t Num)
{
uint32_t icsresulttempRXFLAG;
temp=Num; RXFLAG=3;
i=0;cs=0result=0;
SPI_SCSNSET; //开启通讯
//while(RXFLAG)
//{
TX_ONEBYTE(TX_DATA[0]);
TX_ONEBYTE(TX_DATA[1]); //先发送地址+命令
cs=cs+TX_DATA[0];
cs=cs+TX_DATA[1];
for(;Num>0;Num--)
{
RX_DATA[i]=RX_ONEB
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 14997 2018-11-06 10:51 RN8302\RN8302.c
文件 4434 2018-11-06 10:51 RN8302\RN8302.h
目录 0 2018-11-08 16:10 RN8302
----------- --------- ---------- ----- ----
19431 3
- 上一篇:基于51单片机的只能台灯
- 下一篇:偏最小二乘回归算法
相关资源
- nmos转移特性曲线hspice程序—&mdas
- Spire API文档
- The direction of synaptic plasticity mediated
- 飞思卡尔单片机MC9S12XS12G128驱动(硬件
- 51模拟SPI读写SD卡(包括Fat和Fat32文件
- 28335写的用spi读取传感器数据并用CA
- STM32F103 CC2500完整驱动(模拟SPI)
- 手机短信api接口(源代码)
- cs5530的SPI程序
- 9s12单片机SPI功能代码
- stm32 用SPI 方式读写 SDHC
- SPI Master 的Verilog源代码
- Spire.Doc 破解版
- Spin-1目标的广义parton分布的多项式和
- 介子和S波氘核的四极矩以及对spin-1系
- 基于SPCE061A和PTR8000的模拟SPI总线通信
- 用8位spi实现16位spi
- linux SPI设备注册和驱动小结
- 用Verilog语言写的CPLD和MCU通讯的SPI接口
- Spirent iTest用户手册详细介绍iTest的各
- 精确结果为3d N $$ \\ mathcal {N} $$ = 2 S
- 从Poincaré代数的闭合中得
- Temperature dependence of electron-spin cohere
- QCD中三个循环处的Spin-2形状因子
- STM32分别以串口硬件SPI模拟并口驱动
- stm32利用spi驱动tm1803
- 戴尔Inspiron笔记本 摄像头工具webcam
- 戴尔DELL Inspiron 14R N4010网卡驱动 最新
- dell inspiron n4010摄像头驱动 官方最新版
- 戴尔DELL灵越Inspiron N4120快捷键驱动程
评论
共有 条评论