资源简介
锐能微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单片机的只能台灯
- 下一篇:偏最小二乘回归算法
相关资源
- PMSM电机的正弦驱动dsPIC30F
- OLED4线SPI改IIC的方法和测试代码
- pic单片机spi双机通信
- LTSpice MOS 模型建立
- C51 w25q64驱动及字库烧录
- 用Sping发布WebService
- AD7606基于DSP28335的SPI方式下的数据采集
- Automotive SPICE 规范[PAM_V2.5]
- ADS1256 包含.c.h文件 stm32f407 SPI
- TLE7242驱动源码
- 基于STM32的SPI驱动HMC5983的代码
- msp430代码模拟spi
- DS3234与cm3相连接
- SD卡_SPI驱动源代码.rar
- Cadence Virtuoso SPICE网表导入指南
- CrawlSpider豆瓣图书爬虫
- Hspice(中文实用版)
- MSP430单片机I2C应用笔记
- spi工作在从模式下的verilog代码
- STM32L4_硬件SPI配置_LL库版.rar
- F28335的SPI自发自收.rar
- 基于STM32HAL库的AD9834驱动代码修正.z
- 标准羊角曲线 Euler spiral
- PIC单片机SPI主从通迅
- Winsock2 SPI网络封包截获技术
- Proteus仿真:arduino通过SPI驱动lcd1602(
- dsPIC30F 在无传感器BLDC 控制中的应用
- stm32f103系列spi连接rc522的rfid读卡程序
- orCADPspice9.1仿真软件汉化补丁包.rar
- ICM20602数据读取及初始化配置
评论
共有 条评论