智能车制作
标题:
K60 SPI模式读写SD卡
[打印本页]
作者:
清风明月ay
时间:
2013-3-28 21:06
标题:
K60 SPI模式读写SD卡
/*******************************************************************************
函数名称:SPI_RdWr_Byte
函数功能:打开指定的SPI端口并打开指定的片选信号CS,向SD卡写入一字节数据并读取SD卡回响
入口参数:spin:指定的SPI端口,如SPI0,SPI1,SPI2
data:待向SD卡中写入的数据
出口参数:temp
*******************************************************************************/
u8 SPI_RdWr_Byte(SPIn spin,u8 data)
{
u8 temp;
SPI_TX_WAIT(spin);
do
{
/************* 清标志位 ***************/
SPI_SR_REG(SPIN[spin]) = (SPI_SR_EOQF_MASK
| SPI_SR_TFUF_MASK
| SPI_SR_TFFF_MASK
| SPI_SR_RFOF_MASK
| SPI_SR_RFDF_MASK
);
/************** 清FIFO计数器 **************/
SPI_MCR_REG(SPIN[spin]) |= (SPI_MCR_CLR_TXF_MASK //Clear TX FIFO.写1清 Tx FIFO counter
|SPI_MCR_CLR_RXF_MASK //Clear RX FIFO. 写1清 the Rx FIFO counter.
);
//SPI_SR_REG(SPIN[spin]) |= SPI_SR_RFDF_MASK;
}while( (SPI_SR_REG(SPIN[spin]) & SPI_SR_RFDF_MASK)); //如果 Rx FIFO 非空,则清FIFO.
/***************** 发送一个数据 *******************/
SPI_PUSHR_REG(SPIN[spin]) = 0
| SPI_PUSHR_CTAS(0)
| SPI_PUSHR_EOQ_MASK //End Of Queue,1为 传输SPI最后的数据
| SPI_PUSHR_TXDATA(data);
SPI_EOQF_WAIT(spin); //要及时把RX FIFO的东西清掉,不然这里就无限等待
while( !(SPI_SR_REG(SPIN[spin]) & SPI_SR_RFDF_MASK)); //RFDF为1,Rx FIFO is not empty.
temp = (u8)SPI_POPR_REG(SPIN[spin]); //读取一次接收的数据
//SPI_SR_REG(SPIN[spin]) |= SPI_SR_RFDF_MASK;
return(temp);
}
复制代码
这是我像SD卡发送一个数据并读取SD返回的值,但发现每次读取的值是不对的,请问哪位大神能指点一下!
作者:
清风明月ay
时间:
2013-3-28 21:10
不管写什么数据,返回的都是255
作者:
Smile_Sun
时间:
2013-4-16 11:39
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2