主题中讨论的其他部件: 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始终打印相同的输出。 请您提供帮助吗?
此致,
奥努尔





