This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

cc2530在spi主机模式怎么样接收数据??程序要怎么写呢??用per-test写代码

Other Parts Discussed in Thread: CC2530

硬件SPI的管脚如下:

#define HAL_BOARD_IO_SPI_MISO_PORT     1
#define HAL_BOARD_IO_SPI_MISO_PIN          7
#define HAL_BOARD_IO_SPI_MOSI_PORT     1
#define HAL_BOARD_IO_SPI_MOSI_PIN         6
#define HAL_BOARD_IO_SPI_CLK_PORT      1
#define HAL_BOARD_IO_SPI_CLK_PIN          5
#define HAL_BOARD_IO_EM_CS_PORT        1
#define HAL_BOARD_IO_EM_CS_PIN            4

硬件SPI初始化代码如下:
void halLcdSpiInit(void)
{
   register uint8 baud_exponent;
   register uint8 baud_mantissa;


   // Set SPI on UART 1 alternative 2
   PERCFG |= 0x02;

   // Use SPI on USART 1 alternative 2
   
   MCU_IO_PERIPHERAL(HAL_BOARD_IO_SPI_MISO_PORT, HAL_BOARD_IO_SPI_MISO_PIN);
   MCU_IO_PERIPHERAL(HAL_BOARD_IO_SPI_MOSI_PORT, HAL_BOARD_IO_SPI_MOSI_PIN);
   MCU_IO_PERIPHERAL(HAL_BOARD_IO_SPI_CLK_PORT,  HAL_BOARD_IO_SPI_CLK_PIN);
   MCU_IO_PERIPHERAL(HAL_BOARD_IO_EM_CS_PORT,  HAL_BOARD_IO_EM_CS_PIN);

    baud_exponent = 17;  //4M的速率
    baud_mantissa = 0;

   // Configure peripheral
   U1UCR  = 0x80;      // Flush and goto IDLE state. 8-N-1.
   U1GCR  = SPI_TRANSFER_MSB_FIRST | SPI_CLOCK_PHA_0 | SPI_CLOCK_POL_LO | baud_exponent;  
   
   U1BAUD = baud_mantissa;
   U1CSR  = 0x40;      // SPI mode, master.

}
硬件SPI的宏定义如下:
#define LCD_SPI_BEGIN()            MCU_IO_SET_LOW(HAL_BOARD_IO_EM_CS_PORT, HAL_BOARD_IO_EM_CS_PIN)
#define LCD_SPI_TX(x)              st( U1CSR &= ~0x02; U1DBUF = x; )
#define LCD_SPI_RX()               U1DBUF
#define LCD_SPI_WAIT_RXRDY()       st( while((U1CSR & 0x02) != 0x02); )

写命令的代码如下:
/*------------------------------------------------------------------------------
                                    写命令
Data:命令
------------------------------------------------------------------------------*/
void LCD_WriteCommand(uint8 Data)
{
    LCD_SPI_BEGIN();        //片选CS为低
    LCD_SPI_TX(Data);
    LCD_SPI_WAIT_RXRDY();
    LCD_SPI_END();          //片选CS为高
}
写数据的代码如下:
/*------------------------------------------------------------------------------
                                    写1个字节数据
Data:1个字节数据
------------------------------------------------------------------------------*/
void LCD_WriteData(uint8 Data)
{
    LCD_SPI_BEGIN();       //片选CS为低
    LCD_SPI_TX(Data);      //发送数据
    LCD_SPI_WAIT_RXRDY();
    LCD_SPI_END();         //片选CS为高
}
读一个字节的代码如下:
/*------------------------------------------------------------------------------
                                    读1个字节数据
Data:1个字节数据
------------------------------------------------------------------------------*/
uint8 LCD_ReadData()
{
    uint8 Data;

    LCD_SPI_BEGIN();       //片选CS为低
    LCD_SPI_TX(0xff);      //发送一个无效的数据
    LCD_SPI_WAIT_RXRDY();
    Data=LCD_SPI_RX();     //接收U1DBUF里的数据
    LCD_SPI_END();         //片选CS为高
    return Data;
}

好像就是读取数据不行,cc2530在硬件SPI主机模式下怎么样才能接收到从机发过来的数据??要怎么解决,请TI的工程师还有论坛里的高手们帮我解决一下,多谢!多谢!