本帖最后由 JY-DX-JY 于 2015-8-16 20:05 编辑
我用KL25小板读写93C46,成功了但是有个问题:
就是读程序,如下:
//读
uint_8 READ(uint_8 addr)
{
uint_8 temp1;
gpio_set(PORTA,14,1);
for(i=0;i<10;i++);
SPI_send1(SPI_0,0x06); //写命令
SPI_send1(SPI_0,addr<<1); //写地址,因为93C46读时序有一个虚拟0位,所以发数据多发了一位
SPI_send1(SPI_0,0xff); //虚写
temp1=SPI_receive1(SPI_0); //读数据
temp1=SPI_receive1(SPI_0); //读数据
for(i=0;i<100;i++);
gpio_set(PORTA,14,0);
return temp1;
}
我不明白为什么要读两次才成功,读一次就不对。
下面是SPI读程序
uint_8 SPI_receive1(uint_8 SPI_No)
{
SPI_MemMapPtr baseadd=SPI_baseadd(SPI_No);
while(!(SPI_S_REG(baseadd)& SPI_S_SPRF_MASK)); //检测SPI1是否收到了数据。
return SPI_D_REG(baseadd);
}
请高手解惑,谢谢!
|