/*----------------------------------------------------------------------- Burst_SPI : 使用SPI接口读写一批数据到 输入参数: CMD: 选择Clock/RAM,选择读写 lenth: 数据长度 pwdata: 写入数据的缓冲区; prdata: 读回数据的缓冲区; (SPI的收发是同时进行的) 读CLOCK的数据从SECOND寄存器开始,到CONTROL寄存器,最大8字节 写CLOCK的数据必须一次写完8个字节 读写RAM的数据从 RAM0地址开始,到RAM30地址,最大31字节 -----------------------------------------------------------------------*/ void Burst_SPI(unsigned char CMD,unsigned char len, unsigned char *pwdata,unsigned char *prdata) { EnDS1302; // 使能SPI通讯
_delay_us(10); SPDR=CMD; // 传送命令到SPI寄存器
loop_until_bit_is_set(SPSR,SPIF); // 等待数据传送完?
_delay_us(10); while (len--) { SPDR = *pwdata++; // 传送数据到SPI寄存器
loop_until_bit_is_set(SPSR,SPIF); // 等待数据传送完?
*prdata++=SPDR; // 读取数据
}; DiDS1302; // 关断SPI通讯
_delay_us(10); } |