主题中讨论的其他部件: MSP430F5132
工具/软件:Code Composer Studio
您好,
我无法使ADS8684在定制电路上工作。
以下是逻辑分析器的输出:
UART输出:
ADS8684电路:
MSP430F5132代码:
>>>>>> main.c<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
#include <string.h> #include <stdio.h> #include "driverlib.h" #include "MSP4_sdiarArray[20],charArrayID[6],cbuf1[1],cbuf1[1] ,cbuf1[1],cbuf2[1],cbuf1[1],buf1[1、buf1],1[f1[1],buf1[bbuf1],1[f1],buf1[f1],buf1[f1[1],buf1[bbuf1[1],f1[,f1[,f1],buf1[f1],buf1[bbuf1[,fbuf1],f1],fbuf1[,f1[,bufbuf1],f1[,fbufbufbuf1[,f1],f1],f1[,buf1[,f1[,f1[,fbufbufbuf1],f1], //停止WDT WDT_A_HOLD (WDT_A_BASE); //Status1 STATUS2输出 GPIO _setAsOutputPin (GPIO端口P3,GPIO _PIN0 + GPIO _PIN1); //Status1 STATUS2低 GPIO _setOutputLowOnPin (GPIO端口P3,GPIO _PIN0 + GPIO _PIN1); //RS485 de Re GPIO _setAsOutputPin (GPIO端口P2,GPIO _PIN0 + GPIO _PIN1); //恢复低电平 GPIO _setOutputLowOnPin (GPIO端口P2,GPIO _PIN0 + GPIO _PIN1); //UART - RS485 GPIO _setAsPeripheralModuleFunctionInputPin (GPIO_PORT_P1, GPIO _PIN1 + GPIO PIN2); //SPI - ste = 1.0 SPI_init(); GPIO _setAsOutputPin (GPIO端口P1,GPIO _PIN0);//+ GPIO _PIN3 + GPIO _PIN4 + GPIO _PIN5); GPIO _setOutputLowOnPin (GPIO端口P1,GPIO _PIN0);//+ GPIO _PIN3 + GPIO _PIN4 + GPIO _PIN5); //gPIO_setOutputHighOnPin (gPIO_PORT_P1,gPIO_PIN0); //Baudrate = 9600,时钟频率= 1.048MHz //UCBRx =109,UCBRFx =0,UCBRSx =2,UCOS16 =0 -->从MSP430F5529示例复制 USI_A_UART_initParam ={0}; param.selectClockSource = USI_A_UART_CLOCKSOURCE_SMCLK; Param.clockPrescalar = 109; Param.firstModReg = 0; param.secondModReg = 2; Param.parity = USI_A_UART_NO_PARTIC; Param.msborLsbFirst = USI_A_UART_LSB_FIRST; StopBits的Param.Number= USI_A_UART_OON_STOP_BIT; Param.uartMode = USI_A_UART_MODE; Param.oversampling = USI_A_UART_LLOW频率_BAUDRATE_RELEA; IF (STATUS_FAIL == USI_A_UART_INIT (USI_A0_BASE,¶m)) { 返回; } //启用UART模块以进行操作 USI_A_UART_ENABLE (USI_A0_BASE); //启用接收中断 USI_A_UART_CLEARInterrupt (USI_A0_BASE,USI_A_UART_receive中断); USI_A_UART_enableInterrupt (USI_A0_BASE,USI_A_UART_receive中断); //CIHAZ ID CharArrayID[0]='4'; CharArrayID[1]='6'; CharArrayID[2]='0'; CharArrayID[3]='7'; CharArrayID[4]='5'; CharArrayID[5]='1'; //ads8684 ayarlar ///reset GPIO _setOutputLowOnPin (GPIO端口P1,GPIO _PIN0); //__delay_cycles (1000); SPI_transfer16 (0x8500); GPIO _setOutputHighOnPin (GPIO端口P1,GPIO _PIN0); __DELAY周期(1000); //AUTO_SEQ_EN GPIO _setOutputLowOnPin (GPIO端口P1,GPIO _PIN0); __DELAY周期(1000); SPI_transfer16 (0x01FF); GPIO _setOutputHighOnPin (GPIO端口P1,GPIO _PIN0); __DELAY周期(1000); //通道断电->全部打开 /*GPIO_setOutputLowOnPin (GPIO端口P1,GPIO _PIN0); __DELAY周期(1000); SPI_transfer16 (0x0200); GPIO _setOutputHighOnPin (GPIO端口P1,GPIO _PIN0); __DELAY周期(1000);*/ //通道1 2.5xV参考电压 GPIO _setOutputLowOnPin (GPIO端口P1,GPIO _PIN0); //__delay_cycles (1000); SPI_transfer16 (0x0505); GPIO _setOutputHighOnPin (GPIO端口P1,GPIO _PIN0); __DELAY周期(1000); //通道2 2.5xV参考电压 GPIO _setOutputLowOnPin (GPIO端口P1,GPIO _PIN0); //__delay_cycles (1000); SPI_transfer16 (0x0605); GPIO _setOutputHighOnPin (GPIO端口P1,GPIO _PIN0); __DELAY周期(1000); //通道3 2.5xV参考电压 GPIO _setOutputLowOnPin (GPIO端口P1,GPIO _PIN0); //__delay_cycles (1000); SPI_transfer16 (0x0705); GPIO _setOutputHighOnPin (GPIO端口P1,GPIO _PIN0); __DELAY周期(1000); //通道4 2.5xV参考电压 GPIO _setOutputLowOnPin (GPIO端口P1,GPIO _PIN0); //__delay_cycles (1000); SPI_transfer16 (0x0805); GPIO _setOutputHighOnPin (GPIO端口P1,GPIO _PIN0); __DELAY周期(1000); GPIO _setOutputLowOnPin (GPIO端口P1,GPIO _PIN0); //__delay_cycles (1000); SPI_transfer16 (0xA000); SPI_transfer16(0x0000); GPIO _setOutputHighOnPin (GPIO端口P1,GPIO _PIN0); __DELAY周期(1000); __enable_interrupit(); 而(1){ GPIO _setOutputLowOnPin (GPIO端口P3,GPIO _PIN0); GPIO _setOutputHighOnPin (GPIO端口P3,GPIO _PIN1); __DELAY周期(10.5万); GPIO _setOutputLowOnPin (GPIO端口P3,GPIO _PIN1); GPIO _setOutputHighOnPin (GPIO端口P3,GPIO _PIN0); __DELAY周期(10.5万); __disable_interrupt (); /CH1. GPIO _setOutputLowOnPin (GPIO端口P1,GPIO _PIN0); //__delay_cycles (1万); buF1 = SPI_TRANSFER (0x00); buf2 = SPI_transfer (0x00); buf3 = SPI_transfer (0x00); buf4 = SPI_transfer (0x00); GPIO _setOutputHighOnPin (GPIO端口P1,GPIO _PIN0); __DELAY周期(1万); /CH2. GPIO _setOutputLowOnPin (GPIO端口P1,GPIO _PIN0); //__delay_cycles (1万); buf5 = SPI_transfer (0x00); buf6 = SPI_transfer (0x00); buf7 = spI_transfer (0x00); buf8 = SPI_transfer (0x00); GPIO _setOutputHighOnPin (GPIO端口P1,GPIO _PIN0); __DELAY周期(1万); /CH3. GPIO _setOutputLowOnPin (GPIO端口P1,GPIO _PIN0); //__delay_cycles (1万); buf9 = SPI_transfer (0x00); buf10 = SPI_transfer (0x00); buf11 = SPI_transfer (0x00); buf12 = SPI_transfer (0x00); GPIO _setOutputHighOnPin (GPIO端口P1,GPIO _PIN0); __DELAY周期(1万); //CH4 GPIO _setOutputLowOnPin (GPIO端口P1,GPIO _PIN0); //__delay_cycles (1万); buf13 = SPI_transfer (0x00); buf14 = SPI_transfer (0x00); buf15 = SPI_transfer (0x00); buf16 = SPI_transfer (0x00); GPIO _setOutputHighOnPin (GPIO端口P1,GPIO _PIN0); __DELAY周期(1万); ltoa (buF1,cbuF1); ltoa (buf2,cbuf2); ltoa (buf3,cbuf3); ltoa (buf4,cbuf4); ltoa (buf5,cbuf5); ltoa (buf6,cbuf6); ltoa (buf7,cbuf7); ltoa (buf8,cbuf8); ltoa (buf9,cbuf9); ltoa (buf10,cbuf10); ltoa (buf11,cbuf11); ltoa (buf12,cbuf12); ltoa (buf13,cbuf13); ltoa (buf14,cbuf14); ltoa (buf15,cbuf15); ltoa (buf16,cbuf16); buf1 = 0; buf2 = 0; buf3 = 0; buf4 = 0; buf5 = 0; buf6 = 0; buf7 = 0; buf8 = 0; buf9 = 0; buf10 = 0; buf11 = 0; buf12 = 0; buf13 = 0; buf14 = 0; buf15 = 0; buf16 = 0; GPIO _setOutputHighOnPin (GPIO端口P2,GPIO _PIN0 + GPIO _PIN1); __DELAY周期(1.8万); USI_A_UART_SDEARData (USI_A0_BASE,'A'); USI_A_UART_SDEARData (USI_A0_BASE,'C'); USI_A_UART_SDEARData (USI_A0_BASE,'K'); USI_A_UART_SDESDLData(USCI_A0_base, charArrayID[0]); USI_A_UART_SDESDLData(USCI_A0_base, charArrayID[1]; USI_A_UART_SDESDLData(USCI_A0_base, charArrayID[2]; USI_A_UART_SDESDLData(USCI_A0_base, charArrayID[3]; USI_A_UART_SDESDLData(USCI_A0_base, charArrayID[4]; USI_A_UART_SDESDLData(USCI_A0_base, charArrayID[5]); USI_A_UART_HESMData(USCI_A0_base,'#'); USI_A_UART_SDEARData (USI_A0_BASE,cbuF1[0]); USI_A_UART_SDEARData (USI_A0_BASE,cbuf2[0]); USI_A_UART_SDEARData (USI_A0_BASE,cbuf3[0]); USI_A_UART_SDEARData (USI_A0_BASE,cbuf4[0]); USI_A_UART_HESMData(USCI_A0_base,'#'); USI_A_UART_SDEARData (USI_A0_BASE,cbuf5[0]); USI_A_UART_SDEARData (USI_A0_BASE,cbuf6[0]); USI_A_UART_SDEARData (USI_A0_BASE,cbuf7[0]); USI_A_UART_SDEARData (USI_A0_BASE,cbuf8[0]); USI_A_UART_HESMData(USCI_A0_base,'#'); USI_A_UART_SDEARData (USI_A0_BASE,cbuf9[0]); USI_A_UART_SDEARData (USI_A0_BASE,cbuf10[0]); USI_A_UART_SDEARData (USI_A0_BASE,cbuf11[0]); USI_A_UART_SDEARData (USI_A0_BASE,cbuf12[0]); USI_A_UART_HESMData(USCI_A0_base,'#'); USI_A_UART_SDEARData (USI_A0_BASE,cbuf13[0]); USI_A_UART_SDEARData (USI_A0_BASE,cbuf14[0]); USI_A_UART_SDEARData (USI_A0_BASE,cbuf15[0]); USI_A_UART_SDEARData (USI_A0_BASE,cbuf16[0]); USI_A_UART_HESNData(USCI_A0_base,'\n'); __DELAY周期(1.8万); GPIO _setOutputLowOnPin (GPIO端口P2,GPIO _PIN0 + GPIO _PIN1); __enable_interrupt (); } }//************************************************************************************************************** //// 这是USI_A0中断向量服务例程。 ////************************************************************************************************ #if defined(__TI_Compiler_version__)|| defined(__IAR_systems_ICC__) #pragma vector=USI_A0_vector __interrupt #Elif defined(__Gnuinu_) __attribute__((interrupt (USI_A0_vector)) #endif void USI_A0_ISR(void) { Switch(__偶 数_in_range(UCA0IV,4)) { //矢量2 - RXIFG 案例2: receivedData = USI_A_UART_receiveData (USI_A0_BASE); /*if(receivedData !='#') //检查值 { IF ((c == 0 && receivedData =='4')||(c == 1 && receivedData =='6')||(c == 2 && receivedData =='0')||(c >= 3 &c < 13)) { charArray[c]=已接收数据; C++; CharReceived = 0; 其他 { C = 0; CharReceived = 0; } 其他{ //c = 0; //gPIO_ToggleOutputOnPin (gPIO_PORT_P7,gPIO_PIN1); CharReceived = 1; }*/ 中断; 默认值:break; } }
>>>>>> MSP430_SPI.c<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
#if defined(__MSP430_has _USI_B0__)&& defined(SPI_DRIVER_USSCI_B) void SPI_init() { /*为MSP430器件上的USI_B */配置端口 #ifdef __MSP430F5172 P1SEL || BIT3 | BIT4 | BIT5; #endif #ifdef __MSP430F5529 P3SEL || BIT0 | BIT1 | BIT2; #endif #ifdef __MSP430F5132 P1SEL || BIT3 | BIT4 | BIT5; #endif /* USI-B特定SPI设置*/ UCB0CTL1 |= UCSWRST; UCB0CTL0 = UCCKPH | UCMSB | UCMST | UCMODE_0 | UCSYNC;// SPI模式0,主控 UCB0BR0 = 0x01;// SPI以与SMCLK相同的速度计时 UCB0BR1 = 0x00; UCB0CTL1 = UCSSEL_2;//时钟= SMCLK,清除UCSWRST并启用USI_B模块 。} uINT8_t spI_transfer (uint8_t inb) { UCB0TXBUF = inb; while (!(UCB0IFG & UCRXIFG)//等待RXIFG,表示通过SOMI接收到远程字节 ; 返回UCB0RXBUF; } uint16_t spI_transfer16(uint16_t inW) { uINT16_t重修; uINT8_t * retw8 =(uint8_t *)和retw,* inw8 =(uint8_t *)&inw; UCB0TXBUF = inw8[1]; 同时(!(UCB0IFG & UCRXIFG)) ; retw8[1]= UCB0RXBUF; UCB0TXBUF = inw8[0]; 同时(!(UCB0IFG & UCRXIFG)) ; retw8[0]= UCB0RXBUF; 返回retw; }
UART始终打印相同的输出。 请您提供帮助吗?
此致,
奥努尔