主题中讨论的其他器件:CC2650STK
/*
* ACLK =~32.768kHz、MCLK = SMCLK = DCO 3MHz
*
*
* MSP432P401
*************************************
*||
*| P9.4|->芯片选择
*||
*| P9.7|->数据输出(UCA3SIMO)
*||
*| P9.6|<-数据输入(UCA3SOMI)
*||
*| P9.5|->串行时钟输出(UCA3CLK)
秘书长的报告 /
/* DriverLib 包括*/
#include
/*标准包括*/
#include
#include
#define ID_ERROR 0x01
#define READ_ERROR 0x02
#define STATUS_OK 0x00
uint32_t read_ID (){
uint32_t ID = 0、I;
MAP_GPIO_setOutputLowOnPin (GPIO_PORT_P9、GPIO_PIN4);
for (i=0;i<100;i++)
MAP_SPI_transmitData (EUSCI_A3_base、0x9F);
ID = SPI_receiveData (EUSCI_A3_base);
MAP_SPI_transmitData (EUSCI_A3_base、0x00);
ID = SPI_receiveData (EUSCI_A3_base);
SPI_transmitData (EUSCI_A3_base、0x00);
ID = SPI_receiveData (EUSCI_A3_base);
ID <<= 8;
MAP_SPI_transmitData (EUSCI_A3_base、0x00);
ID += MAP_SPI_receiveData (EUSCI_A3_base);
ID <<= 8;
MAP_SPI_transmitData (EUSCI_A3_base、0x00);
ID += MAP_SPI_receiveData (EUSCI_A3_base);
MAP_GPIO_setOutputHighOnPin (GPIO_PORT_P9、GPIO_PIN4);
退货 ID;
}
uint8_t Check_ID (){
uint32_t ID;
ID = READ_ID ();//读取设备 ID
if (ID!= 0xEFAA21){
返回 ID_ERROR;
}
否则{
返回 STATUS_OK;
}
}
//![简单 SPI 配置]
/* SPI 主配置参数*/
const eUSCI_SPI_MasterConfig spiMasterConfig =
{
EUSCI_A_SPI_CLOCKSOURCE_SMCLK、// SMCLK 时钟源
3000000、// SMCLK = DCO = 3MHz
500000、// SPICLK = 500kHz
EUSCI_A_SPI_MSB_FIRST、// MSB 优先
EUSCI_A_SPI_PHASE_DATA_Captured_ONFIRST_Changed_ON_NEXT、//相位
EUSCI_A_SPI_CLOCKPOLARITY_INACT_HIGH、//极性
EUSCI_A_SPI_4PIN_UCxSTE_ACTIVE_LOW // 4线 SPI 模式
};
int main (空)
{
uint8_t ii;
MAP_WDT_A_HOLDTimer();
MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P9、
GPIO_PIN6、GPIO_PRIMARY_MODULE_FUNCTION);
MAP_GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P9、
GPIO_PIN7 | GPIO_PIN5、GPIO_PRIMARY_MODULE_FUNCTION);
MAP_GPIO_setAsOutputPin (GPIO_PORT_P9、GPIO_PIN4);
MAP_GPIO_setOutputHighOnPin (GPIO_PORT_P9、GPIO_PIN4);
MAP_SPI_selectFourPinFunctionality (EUSCI_A3_base、EUSCI_SPI_ENABLE_SIGNAL for _4WIRE_SLAVE);
/*启用 SPI 模块*/
MAP_SPI_initMaster (EUSCI_A3_base、&spiMasterConfig);
MAP_SPI_enableModule (EUSCI_A3_base);
for (ii = 0;ii < 200;ii +);
check_id();
while (1);
}