编辑: 木头飞艇 2016-05-04

0 R/W=1 D5 D4 D3 D2 D1 D0 D5~D0 为对应的寄存器地址;

数据(24Bit)格式(高字节在前,低字节在后) 高字节(8Bit) 中间字节(8Bit) 低字节(8Bit) 4. 在/CS 片选信号拉低开始操作 SPI 端口之前,请确保 SCLK、DIN 为低电平;

5. SPI 软复位功能;

通过连续向 BL6523B 写入

8 个字节的 FFH,SPI 通信模块可复位;

SPI 读写的典型时序图 例:写15H 寄存器 写入值 AAAH BL6523B 单相多功能电能计量 应用指南 5/15 v1.2 波形

1 为DOUT,波形

2 为SCLK.波形

3 为DIN;

例:读15H 寄存器 读出值 AAAH 波形

1 为DOUT,波形

2 为SCLK.波形

3 为DIN;

SPI 读写例程 void SPI_Read(u8 Cmd) //SPI Read data { s8 n,m;

BL6523B 单相多功能电能计量 应用指南 6/15 v1.2 GPIO_WriteHigh(SPI_PORT,SPI_CS);

//CS 片选为高电平 Delay(2);

GPIO_WriteLow(SPI_PORT,SPI_SCLK);

//SCLK 为低电平 Delay(2);

GPIO_WriteLow(SPI_PORT,SPI_CS);

//CS 片选为低电平, 开启 SPI 端口 Delay(2);

//发送命令字节 for(n=7;

n>=0;

n--) { GPIO_WriteLow(SPI_PORT,SPI_SCLK);

//SCLK=0 Delay(2);

if(ValBit(Cmd,n)==0) //MCU 从命令字节的最高 位开始发送数据到 DIN 管脚 GPIO_WriteLow(SPI_PORT,SPI_DIN);

else GPIO_WriteHigh(SPI_PORT,SPI_DIN);

Delay(2);

GPIO_WriteHigh(SPI_PORT,SPI_SCLK);

//SCLK=1;

在SCLK 的上 升沿 DIN 上的数据被移入 BL6523B Delay(2);

} GPIO_WriteLow(SPI_PORT,SPI_SCLK);

//SCLK=0 Delay(18);

//BL6523B 从DOUT 管脚输出

3 个字节的数据 for(m=2;

m>=0;

m--) { for(n=7;

n>=0;

n--) { GPIO_WriteHigh(SPI_PORT,SPI_SCLK);

//SCLK=1 Delay(2);

GPIO_WriteLow(SPI_PORT,SPI_SCLK);

//SCLK=0 Delay(2);

//MCU 从DOUT 管脚接收数据 BL6523B_Data_Read[m]=BL6523B_Data_Read[m]=0;

m--) { for(n=7;

n>=0;

n--) { GPIO_WriteLow(SPI_PORT,SPI_SCLK);

//SCLK=0 if((BL6523B_Data_Write[m]&((u8)1

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题