/*******************************************************************************
* @fn trx8BitRegAccess
*
* @brief This function performs a read or write from/to a 8bit register
* address space. The function handles burst and single read/write
* as specified in addrByte. The function assumes that chip is ready.
*
* input parameters
*
* @param accessType - Specifies if this is a read or write and if it's
* a single or burst access. Bitmask made up of
* RADIO_BURST_ACCESS/RADIO_SINGLE_ACCESS/
* RADIO_WRITE_ACCESS/RADIO_READ_ACCESS.
* @param addrByte - address byte of register.
* @param pData - data array
* @param len - Length of array to be read(TX)/written(RX)
*
* output parameters
uint8 trx8BitRegAccess(uint8 accessType, uint8 addrByte, uint8 *pData, uint16 len)
{
uint8 readValue;
/* Pull CS_N low and wait for SO to go low before communication starts */
TRXEM_SPI_BEGIN();
while(TRXEM_PORT_IN & TRXEM_SPI_MISO_PIN);
/* send register address byte */
TRXEM_SPI_TX(accessType|addrByte);
TRXEM_SPI_WAIT_DONE();
/* Storing chip status */
readValue = TRXEM_SPI_RX();
trxReadWriteBurstSingle(accessType|addrByte,pData,len);
TRXEM_SPI_END();
/* return the status byte value */
return(readValue);
}
#define TRXEM_SPI_BEGIN() st( TRXEM_PORT_OUT &= ~TRXEM_SPI_SC_N_PIN; NOP(); )
#define TRXEM_SPI_TX(x) st( UCB0IFG &= ~UCRXIFG; UCB0TXBUF= (x); )
#define TRXEM_SPI_WAIT_DONE() st( while(!(UCB0IFG & UCRXIFG)); )
#define TRXEM_SPI_RX() UCB0RXBUF
#define TRXEM_SPI_WAIT_MISO_LOW(x) st( uint8 count = 200; \
while(TRXEM_PORT_IN & TRXEM_SPI_MISO_PIN) \
{ \
__delay_cycles(5000); \
count--; \
if (count == 0) break; \
} \
if(count>0) (x) = 1; \
else (x) = 0; )
#define TRXEM_SPI_END() st( NOP(); TRXEM_PORT_OUT |= TRXEM_SPI_SC_N_PIN; )
问题是所有的宏 #define TRXEM_SPI_BEGIN() st( TRXEM_PORT_OUT &= ~TRXEM_SPI_SC_N_PIN; NOP(); ) 等等对于 MSP432P4111 都是不正确的,而且我没有找到任何其他关于该函数的文档。这些函数是为 msp430f5438a 编写的,对我来说,过渡到 MSP432 似乎并不容易。因此,如果有人熟悉 MSP432P4111 或一般情况下的 MSP432,特别是 SPI,那么能给我一个见解会很棒。此外,如果您想知道我的整个项目是什么,它是关于使用德州仪器 (TI) 的 MSP432P4111 和收发器 CC1200 构建遥测系统。最后一点是我使用 Code Composer Studio 进行编码。