智能车制作

标题: K60 SPI模式读写SD卡 [打印本页]

作者: 清风明月ay    时间: 2013-3-28 21:06
标题: K60 SPI模式读写SD卡
  1. /*******************************************************************************
  2. 函数名称:SPI_RdWr_Byte
  3. 函数功能:打开指定的SPI端口并打开指定的片选信号CS,向SD卡写入一字节数据并读取SD卡回响
  4. 入口参数:spin:指定的SPI端口,如SPI0,SPI1,SPI2
  5.           data:待向SD卡中写入的数据
  6. 出口参数:temp
  7. *******************************************************************************/
  8. u8 SPI_RdWr_Byte(SPIn spin,u8 data)
  9. {
  10.     u8 temp;
  11.     SPI_TX_WAIT(spin);

  12.     do
  13.     {
  14.         /*************  清标志位  ***************/
  15.         SPI_SR_REG(SPIN[spin]) = (SPI_SR_EOQF_MASK
  16.                                 | SPI_SR_TFUF_MASK
  17.                                 | SPI_SR_TFFF_MASK
  18.                                 | SPI_SR_RFOF_MASK
  19.                                 | SPI_SR_RFDF_MASK
  20.                                 );
  21.    
  22.         /************** 清FIFO计数器 **************/
  23.         SPI_MCR_REG(SPIN[spin])    |=  (SPI_MCR_CLR_TXF_MASK     //Clear TX FIFO.写1清 Tx FIFO counter
  24.                                    |SPI_MCR_CLR_RXF_MASK     //Clear RX FIFO. 写1清 the Rx FIFO counter.
  25.                                    );
  26.         //SPI_SR_REG(SPIN[spin]) |= SPI_SR_RFDF_MASK;
  27.     }while( (SPI_SR_REG(SPIN[spin]) & SPI_SR_RFDF_MASK));   //如果 Rx FIFO 非空,则清FIFO.

  28.     /***************** 发送一个数据 *******************/   
  29.     SPI_PUSHR_REG(SPIN[spin]) = 0
  30.                    | SPI_PUSHR_CTAS(0)
  31.                    | SPI_PUSHR_EOQ_MASK         //End Of Queue,1为 传输SPI最后的数据
  32.                    | SPI_PUSHR_TXDATA(data);
  33.    
  34.     SPI_EOQF_WAIT(spin);    //要及时把RX FIFO的东西清掉,不然这里就无限等待
  35.    
  36.     while( !(SPI_SR_REG(SPIN[spin]) & SPI_SR_RFDF_MASK));    //RFDF为1,Rx FIFO is not empty.
  37.     temp = (u8)SPI_POPR_REG(SPIN[spin]);    //读取一次接收的数据         
  38.     //SPI_SR_REG(SPIN[spin]) |= SPI_SR_RFDF_MASK;
  39.     return(temp);
  40.    

  41. }
复制代码
这是我像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