[讨论] CC2530设置spi主模式接RC522从spi模式

韩薇0513   2016-11-19 13:56 楼主
    写一个CC2530驱动RC522的读卡器程序,不知道哪错了,请高手驻足指教。
   CC2530                  RC522
-------------          -------------
|P0_4   SSN   |--------->|SSN(SDA)   |

|P0_5   SCK   |--------->|SCK        |

|P0_3   MOSI|--------->|MOSI       |

|P0_2   MISO|<---------|MISO       |
-------------          -------------
首先进行初始化InitCC2530():
void InitCC2530(void)
{
  InitClockTo32M();//设置晶振
  init_port();//初始化串口I/O口
  init_Baudrate();//初始化波特率
  init_spi();//设置spi通信进入发送模式
}

void InitClockTo32M(void)
{   
    CLKCONCMD &= ~0x40;              //设置系统时钟源为 32MHZ晶振
    while(!(CLKCONSTA & 0x40));         //等待晶振稳定
    CLKCONCMD &= ~0x47;              //设置系统主时钟频率为 32MHZ
}

void init_port(void)
{
  InitLed();
  P2DIR &=~ 0xC0;// PRIPO=00-->>usart0优先>usart1>定时器1
  PERCFG &=~ 0x01;        // PERCFG.U1CFG = 0

  P0SEL |= 0x2C;         // P0_5, P0_3, and P0_2 are peripherals
  P0SEL &=~ 0x10;        // P0_4 is GPIO (SSN)
  P0DIR |=  0x10;        //SSN is set as output

  P0SEL &=~ 0x01;        // P0_0 is GPIO (RST)
  P0DIR |= 0x01;         // RST is set as output

  /*运行串口0接收*/
  U0CSR |= 0x40;
}

void init_Baudrate(void)
{
  U0GCR |= 8;                                       
  U0BAUD |= 59;//波特率小数部分的值。BAUD_E和BAUD_M决定了UART的波特率和SPI的主SCK         
}

/*当寄存器UxDBUF 写入字节后,SPI 主模式字节传送就开始了。*/
void init_spi(void)
{
  // SPI Master Mode
  U0CSR &= ~0xA0;  

  // Configure phase, polarity, and bit order
  U0GCR &= ~0xC0;      // CPOL = CPHA = 0 负时钟极性

  U1GCR |= 0x20;       // ORDER = 1 -->MSB先传送
}
然后就是进行RC522的初始化
请问有什么错误吗?
还是要写中断函数?


回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复