uint8 SPI_Read_752(uint8 reg,uint8 channel) //reg为寄存器地址,channel为通道号 {
uint8 Comm752[1],receive_buf[8];
uint8 readdata;
reg=(reg<<3)|0x80; //0x80,是否就是读命令?
if(channel==2) reg=reg|0x02; //加入通道号
Comm752[0]=reg;
IO0CLR |= 1<<12; //片选激活
SPI_Send_752(Comm752,1); //发送命令字
SPI_Read(receive_buf,1); //读取数据
readdata=receive_buf[0];
IO0SET |= 1<<12; //片选关闭
return readdata; //返回数据
}
///////////////////////////////////////////////////////////////////////////////////
void SPI_Read(uint8 *p,uint8 num)
{
uint8 i;
for(i=0;i<num;i++)
{
SPI_Send(0xff,1); //发送空数据
while(0==(S0PTSR&0X80)); //等待发送完成
*p = S0PDR;
}
}
MCU用得是LPC2119
现在时发送数据没有问题,但是接收不到数据,SPI发送空数据,产生时钟以便接收,那发送寄存器和接收寄存器为同一个,改如何协调,同样SC16IS752也为收发同一寄存器,不知道该如何来处理,求高手指教啊 |