int16_t AD7172_readID(int8_t AD_ID_reg_address)
{
int16_t AD_ID_L = 0;
int16_t AD_ID_H = 0;
GPIO_setOutputLowOnPin(GPIO_PORT_P6, GPIO_PIN2); //CS=0
SPI_transmitData(EUSCI_B1_MODULE, AD_ID_reg_address);
AD_ID_H = SPI_receiveData(EUSCI_B1_MODULE); //接收高8位
AD_ID_L = SPI_receiveData(EUSCI_B1_MODULE); //接收低8位
AD_ID_H = AD_ID_H << 8 | AD_ID_L;
GPIO_setOutputHighOnPin(GPIO_PORT_P6, GPIO_PIN2); //CS=1
return AD_ID_H;
}
void SPI_init(void) //SPI 初始化函数。硬件以P6.2~P6.5,从属UCB1。20170609
{
const eUSCI_SPI_MasterConfig spiMasterConfig =
{
EUSCI_B_SPI_CLOCKSOURCE_SMCLK, // SMCLK。
3000000, // 改为6000000,即可得到4MHz。
500000, // 8MHz带宽
EUSCI_B_SPI_MSB_FIRST, // MSB First。符合AD7172时序。
EUSCI_B_SPI_PHASE_DATA_CHANGED_ONFIRST_CAPTURED_ON_NEXT, // Phase
EUSCI_B_SPI_CLOCKPOLARITY_INACTIVITY_HIGH, // High polarity
EUSCI_B_SPI_3PIN, // 3线SPI,CS只在操作AD7172是进行处理
};
GPIO_setAsPeripheralModuleFunctionInputPin( //P6口,P6.3P6.4P6.5选通为SPI功能
GPIO_PORT_P6,
GPIO_PIN3 | GPIO_PIN4 | GPIO_PIN5, //CLK SIMO SOMI
GPIO_PRIMARY_MODULE_FUNCTION);
SPI_initMaster(EUSCI_B1_MODULE,&spiMasterConfig);
SPI_enableModule(EUSCI_B1_MODULE);
AD7172_Reset();
AD7172_readID(0X47);
}
现在的问题是,收不到AD7172的数据。经过示波器测量在发送数据过程中,CLK是有的。但是在接收数据过程中,CLK没有信号出来。还请路过的大神指点一下。 |