主题中讨论的其他部件: MSP430F6659
您好,
我试图通过SPI使用MSP430F6659来运行PGA113。 首先,我在第一个8位和第二个8位之间延迟了35.6 Us,如下一张照片所示:
我唯一能解决这一问题的方法是再次写入缓冲区,而不询问它是否可用, 如ISR所示
UCA0TXBUF= PGA_Data1;//eSCRIBE有效期
UCA0TXBUF= PGA_Data2;//eSCRIBE菜单有效
我正在使用SPI模式10。 我发送的数据是0x2A21 (Gain = 5 CH=1)或0x2A20 (Gain = 5 CH=0)。 Vref=GND,AVDD=DVDD=5V。 数据在PGA启用的时间间隔内正确发送
在不连接SPI引脚的情况下,如果CH0/CH1连接至GND,则输出为0v。 当我将直流电源连接到CH1或CH0 (根据命令),并且输入电压从0v到0.5V不等时,输出仍为0v。 这些值是我用其他PGA113制造的第二个PCB的值,第一个和相同的条件下输出是1.23v或3V,其中的一些值,但它也没有通过改变输入来改变。
我认为我的问题是沟通上的问题,但我看不到。 我也认为我尊重SPI计时
我的代码是:
main.c: // MSP430F6659 // -------- // /|\\| |// || |// --|RST WFP 1.0 |-> LED // | |// | WFP 2.4 (UCA0SIMO)|-> Data Out (UCA0SIMO) //(数据输出) | |// | WFP 2.5 |<-数据输入(UCA0SOMI) // | |// PGA CS <-|WFP 5.2 串行时钟输出(UCA0CLK)#include <MSP40.0.h>#include "SPI.h"#define LED_DIR P1DIR #define LED_OUT P1OUT #define 2.3 BIT0 #define PGA_DIR P5DIR #define PGA_OUT P5OUT //POR 5.2 引脚28 #define PGA_DataCS BIT2 int P1= 0;0 = 0;0 = 0 ;0 = 0;0;0 = 0;0;0 = 0;0;0;0;0 = 0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0; //Ganancia 5 CH0 void main(void){ WDTCTL = WDTPW | WDTHOLD;// 停止看门狗计时器 Port_Mapping();//LLamo funcion que me mapea los Puertos del SPi. INIT_SPI();//LLamo funcion que配置SPI PGA_DIR |= PGA_CS;//定义como salida WFP 3.0 que es el CS del PGA PGA_OUT |= PGA_CS;//解氧度PGA __enable_interrupit(); //重新启用所有中断 LED_DIR || LED;//定义COO SALIDA EL WFP 1.0 LED_OUT &=~ LED;//Apago el LED while (1){//--------------- Tx SPI PGA----------------------------------- __delay_cycles(50); PGA ^&=~ PGA_CS;//Habilito PGA (activo por bajo)__delay_cycles(50);n=1;UCA0IE |= UCTXIE;// Habilito中断转换(al hito Deshabilta Salta a la })__delay_cycles(50);!-------- PGA 输出-------------- } }//------------------ RUTINA DE INTERRUPCION SPI------------------ #pragma vector=USI_A0_vector //vector de inter流,hay uno solo para transmicion y reconcion __interrupt void USI_A0_ISR(void) { SWITCH(__偶 数_IN_RANGE(UCA0IV,4))//Pregunta por UCA0IV, que es registro de vectores de interrupt on / genericio 案例0:中断; //矢量0 -无中断//无干草中断点 案例2:中断; //矢量2 - RXIFG //se recebio un Dato 案例4: //矢量4 - TXIFG //El buffer de transmision esta libre 交换机(n){ 案例0: UCA0IE &=~ UCTXIE;// Deshabilita interrupion 中断; 案例1: UCA0TXBUF= PGA_Data1;//eSCRIBE有效期 UCA0TXBUF= PGA_Data2;//eSCRIBE菜单有效 UCA0IE &=~ UCTXIE;// Deshabilita interrupion 中断; 案例2: 中断; 默认值:break; } 默认值:break; }//---------------------------------- SPI.h: #include <MSP40.0.h> #define SPI_MODO _00 0 #define SPI_MODO _01 1 #define SPI_MODO _10 2 #define SPI_MODO _11 3 #define MSP4S_SPI_MODO SPI_MODO SPI_10 //cambiar quiel modo de ****************************************************************************************************************************************************************************************************************************************//ACA**** // Funcion:Port_Mapping // Configuracion el mapeo de Puertos para el SPI //**************************************************************************************************************************************************************************************** void Port_Mapping(void); //******************************************************************************************************************************************************** //******************************************************************************************************************************** //功能:init_spi //配置acion del USCI A0 SPI //**************************************************************************************************************************************************************** void Init_SPI (void); //************************************************************************************************************************************************************************ SPI.C: #include "SPI.h" //******************************************************************************************************************************************************************************************************************************************************** // Funcion:Port_Mapping // Configuracion el mapeo de Puertos para el SPI //**************************************************************************************************************************************************************************************** void Port_Mapping(void){__disable_interrupti();// 在更改端口映射寄存器 PMAPKEYID=PMAPKEY;//esribir la key 2D52h me garantiza acceso de esura crita todos los registros de control de mapeo de Puertos //Para cada port pin Px.y que tiene la regularunable pista, mapponesa. P2MAP3 = PM_UCA0CLK;//WFP 2.3 conecto el CLK (15号插针博内拉) P2MV4 = PM_UCA0SIMO;//WFP 2.4 conecto el SIMO (16号插针硼拉) P2MAP5 = PM_UCA0SOMI;//WFP 2.5 2.3 2.5 2.3 2.5 conecto el SOMI (Pin 17 bornera) PMAPKEYID = 0;//Escribendo cualendo cualquier valor desabilito el accesso al Port Mapping SEL 2DIR |= BIT3|BIT4|BIT5;//SelectivoPOR 2.4 funciono/ ~2= 2.4 //******************************************************************************************************************************** //功能:init_spi //配置acion del USCI A0 SPI //**************************************************************************************************************************************************************** void Init_spi (void){ UCA0CTL1 |= UCSWRST;//**将状态机置于RESET状态** #IF (MMSP430_SPI_MODO == UCA0CTL0|= UCMST|UCSYNC|UCMSB;// 3引脚,8位极性主控,MSB,Modo 0:时钟fase,SPI_NC_UCCM1= 0 ,USPI0SPI_UCCM1= 0 时钟fase low y时钟极性高 #endif (MSP430_SPI_MODO == SPI_MODO) UCA0CTL0 |= UCMST|UCSYNC|UCMSB|UCCSPI KPH;// 3引脚,8位主控,MSB,MODO 1 0:时钟频率高,时钟极性#ENDIF|UCCSPL|USPI=8 引脚,UCCSPI_B|SPIF_UCCSPIB|MPH_UCCSPIF= 时钟频率高y时钟极性高 #endif UCA0CTL1 || UCSSEL_2;// SMCLK (定义时钟) UCA0BR0 = 0;// Si quisiera dividir el SMCLK cambiar ACA UCA0BR1 = 0;// UCA0MCTL = 0;//无调制 UCA0CTL1 &=~ UCSWRST;//**初始化USCI状态机** }//************************************************************************************************************************************************************************