This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/ADS8684:SPI的恒定响应

Guru**** 2387060 points
Other Parts Discussed in Thread: ADS8684, MSP430F5132
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/665036/ccs-ads8684-constant-response-from-spi

部件号:ADS8684
主题中讨论的其他部件: 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,&param))
{
返回;
}

//启用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始终打印相同的输出。 请您提供帮助吗?

此致,

奥努尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    从我所见,您的原理图看起来很好。

    另请参阅 数据表第34页 ,了解数据采集示例。

    第11页上的时间图表也将证明是有用的, 最常见的问题是时间要求未得到满足。

    最好保持时钟为稳定的脉冲序列,而不是在CS脉冲中将其分解。

    我建议您执行以下操作来调试软件问题

    -对寄存器进行编程后,请阅读它们以确保它们已正确编程;数据表的第46页将有助于完成此操作

    -使用已知的直流输入和转换,这将缩小问题范围。

    此致,

    Cynthia

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢您的回复。 明天我将处理一些位bang SPI函数,我将向您提供信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我编写了自己的函数来进行我的自定义SPI通信。

    代码如下:

    //R&D Robotics - Onur Yildirim
    //模拟输入MODULU - 07.02 2018
    
    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include "driverlib.h"
    //#include "MSP4S_SPI.h"
    
    
    #define STE GPIO _PIN0
    #define CLK GPIO _PIN3
    #define MOSI GPIO PIO_PIN4
    #define miso GPIO PIO_PIN5
    
    
    CHAR CHARArray[20],charArrayID[6],cbuf1[1],cbu13 [1],cbuf2[1],cbuf2[1],cbuf4[1],buf4[1],buf4[1]buf1、buf1[1、
    buf1、buf1、buf1、buf1、buf1、buf1、buf1[1、buf1、buf1、buf1、buf2[1、buf1、buf1、buf1、buf1、buf1、buf1、buf2[1、buf1、buf1、f1、buf1、buf1、buf1、f1、buf1、f1、buf1、f1、buf1、buf1、buf1、f1、buf1、f1、buf1、buf1、f1、f1、buf1、f1、f1、buf
    
    buf2,buf3,buf4;
    
    void spitransferCommandWrite (uint16_t cmd)
    {
    GPIO_setOutputLowOnPin (GPIO端口P1,STE);//ste low
    对于(i=0;i<16;i++)
    {
    cmd = cmd <<1;
    tempWord = cmd和0x0001;
    IF (tempWord == 0x0000)
    {
    GPIO _setOutputLowOnPin (GPIO_PORT_P1, MOSI);
    }
    否则
    {
    GPIO _setOutputHighOnPin (GPIO_PORT_P1, MOSI);
    }
    GPIO_setOutputHighOnPin (GPIO端口P1,CLK);
    GPIO _setOutputLowOnPin (GPIO_PORT_P1, CLK);
    
    }
    GPIO_setOutputHighOnPin (GPIO端口P1,STE);// STE高
    GPIO _setOutputHighOnPin(GPIO_PORT_P1, MOSI);
    }
    
    void spitransCommandRead (uint16_t ADR)
    {
    
    }
    
    uint16_t spitransferMeasurementRead (uint16_t Cmdr, uint16_t valR)
    {
    结果= 0x0000;
    GPIO_setOutputLowOnPin (GPIO端口P1,STE);//ste low
    对于(i=0;i<32;i++)
    {
    如果(I<16){
    CMDR = CMDR <1;
    tempWord = Cmdr和0x0001;
    其他{
    valR = valR <1;
    tempWord = valR & 0x0001;
    }
    IF (tempWord == 0x0001)
    {
    GPIO _setOutputHighOnPin (GPIO_PORT_P1, MOSI);
    }
    否则
    {
    GPIO _setOutputLowOnPin (GPIO_PORT_P1, MOSI);
    }
    GPIO_setOutputHighOnPin (GPIO端口P1,CLK);
    GPIO_setOutputLowOnPin (GPIO端口P1,CLK);
    如果(i>15){
    tempInput = gPIO_getInputPinValue (GPIO_PORT_P1, miso);
    结果=结果>> 1;
    IF (tempInput == gPIO_INPUT_PIN_HIGH)
    {
    结果=结果| 0x0001;
    }
    否则
    {
    结果=结果| 0x0000;
    }
    }
    
    }
    GPIO_setOutputHighOnPin (GPIO端口P1,STE);// STE高
    返回结果;
    }
    
    
    void main (void)
    {
    //停止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,STE);//ste
    GPIO_setAsOutputPin (GPIO端口P1,CLK);//clk
    GPIO _setAsOutputPin (GPIO端口P1,MOSI);//mosi
    GPIO_setAsInputPin (GPIO端口P1,miso);//miso
    //gPIO_setOutputLowOnPin (gPIO_PORT_P1,STE + MOSI);//ste mosi low
    GPIO_setOutputHighOnPin (GPIO端口P1,STE);// STE高
    
    
    
    //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,&param))
    {
    返回;
    }
    
    //启用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
    
    spitransferCommandWrite(0x8500);
    __DELAY周期(1万);
    
    //AUTO_SEQ_EN
    spitransferCommandWrite(0x01FF);
    __DELAY周期(1万);
    
    
    //通道断电->全部打开
    /*GPIO_setOutputLowOnPin (GPIO端口P1,GPIO _PIN0);
    __DELAY周期(1000);
    SPI_transfer16 (0x0200);
    GPIO _setOutputHighOnPin (GPIO端口P1,GPIO _PIN0);
    __DELAY周期(1000);*/
    
    
    //通道1 2.5xV参考电压
    spitransferCommandWrite (0x0505);
    __DELAY周期(1万);
    
    //通道2 2.5xV参考电压
    spitransferCommandWrite(0x0605);
    __DELAY周期(1万);
    
    //通道3 2.5xV参考电压
    spitransferCommandWrite(0x0705);
    __DELAY周期(1万);
    
    //通道4 2.5xV参考电压
    spitransferCommandWrite(0x0805);
    __DELAY周期(1万);
    
    /*
    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 ();
    
    
    buF1 = spitransferMeasurementRead (0xA000 0x0000);
    __DELAY周期(1万);
    buf2 = spitransferMeasurementRead (0x0000,0x0000);
    __DELAY周期(1万);
    buf3 = spitransferMeasementRead (0x0000,0x0000);</s>0000
    __DELAY周期(1万);
    buf4 = spitransferMeasurementRead (0x0000,0x0000);</s>0000
    
    /*
    /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);
    
    
    buf1 = 0;
    buf2 = 0;
    buf3 = 0;
    buf4 = 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_HESMData(USCI_A0_base,'#');
    USI_A_UART_SDEARData (USI_A0_BASE,cbuf2[0]);
    USI_A_UART_HESMData(USCI_A0_base,'#');
    USI_A_UART_SDEARData (USI_A0_BASE,cbuf3[0]);
    USI_A_UART_HESMData(USCI_A0_base,'#');
    USI_A_UART_SDEARData (USI_A0_BASE,cbuf4[0]);
    /*USI_A_UART_HESXData(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_HESDData(USCI_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;
    }
    }
    

    但是味噌线总是很低?!

    SPI命令16位:

    用于读取测量值的SPI传输:

    有什么想法总是很低?

    谢谢!

    奥努尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    我修复了SPI位感叹号功能,现在MCU与ADS8684进行通信。  

    但在向通道应用5V电压时,没有生命,也没有更高的值。 它始终从信道返回4,20,16,25。

    我解决了我的问题。 但现在,我想有一个关于注册的新问题。 如果您有任何想法,请回答帖子。

    谢谢!

    奥努尔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我很高兴您能够修复您的初始问题。 我同意这可能是一个注册问题,也许您已将信道编程到不同的输入范围。 在低于或高于5V时,您是否看到输入值不同的相同问题? 数据表的第47页有助于选择输入范围。
    在读取刚刚编程的寄存器后,尝试写入寄存器,以确保它们已正确完成。
    确保对寄存器进行了正确编程并继续出现问题后,进行调试的一种方法是一次查看一个通道。 您可以手动选择信道,这将帮助您了解计时要求以及转换出错的位置。 如果每个信道都能正常工作,则您可以应用扫描或自动功能,如果现在看到错误的值,则问题区域会进一步缩小。
    此致
    Cynthia