求R8C/1B R5F211B4 SPI的例程
最近在用R5F211B4的SPI,搞了好几天都没有效果,谁能给一段参考代码,让我看看哪里出了问题,谢谢。 现在用软件模拟了个SPI,先凑合用了,硬件的SPI怎么调都没有反应,硬件的SPI有人用过吗? 例程能共享下不楼主?教我软件调试下....初学者很多都不懂!我的扣扣是994881821 小混hun 发表于 2012-9-20 09:16 static/image/common/back.gif例程能共享下不楼主?教我软件调试下....初学者很多都不懂!我的扣扣是994881821 ...
/*****************************************
功能描述:SPI指定地址写1字节数据
参 数:uchar add 目标地址
uchar data 数据
返 回 值:无
*****************************************/
void SpiWriteAddressData(uchar add, uchar data)
{
unsigned char i;
nSET_CLR;
add = add | 0x80; //写操作
for(i=0;i<8;i++) //先写地址
{
if((add&0x80)==0x80)
SDI_SET; //DIN=1
else
SDI_CLR; //DIN=0
DelayUs(1);
SCLK_SET; //CLK=1
DelayUs(2);
SCLK_CLR; //CLK=0
add = add << 1;
DelayUs(1);
}
for(i=0;i<8;i++) //再写数据
{
if((data&0x80)==0x80)
SDI_SET; //DIN=1
else
SDI_CLR; //DIN=0
DelayUs(1);
SCLK_SET; //CLK=1
DelayUs(2);
SCLK_CLR; //CLK=0
data = data << 1;
DelayUs(1);
}
nSET_SET;
}
/*****************************************
功能描述:SPI指定地址读1字节数据
参 数:uchar add 目标地址
返 回 值:指定地址数据
*****************************************/
uchar SpiReadAddressData(uchar add)
{
unsigned char i,data;
nSET_CLR;
add = add & 0x7f; //读操作
for(i=0;i<8;i++) //先写地址
{
if((add&0x80)==0x80)
SDI_SET; //DIN=1
else
SDI_CLR; //DIN=0
DelayUs(1);
SCLK_SET; //CLK=1
DelayUs(2);
SCLK_CLR; //CLK=0
add = add << 1;
DelayUs(1);
}
data = 0;
for(i=0;i<8;i++) //再写数据
{
DelayUs(1);
data = data << 1;
SCLK_SET; //CLK=1
DelayUs(2);
if(SDO_H)
data++;
DelayUs(1);
SCLK_CLR; //CLK=0
DelayUs(1);
}
nSET_SET;
return (data);
}
页:
[1]