Hi all,
I disconnect MSP430F5529 on ADS1293 by scratching R25, R26 and R28 on board and I am driving J2 (SPI) port with Tiva-C LaunchPad.
My first problem is; I can't read the register at once. When I want to read specific address, I have to read in "for" loop. (after 8 times, in 9th count)
My code is attached. I would appreciate if you can help.
Best Regards,
Burak
#include <stdint.h> #include <stdbool.h> #include "inc/hw_memmap.h" #include "inc/hw_types.h" #include "driverlib/sysctl.h" #include "driverlib/interrupt.h" #include "driverlib/gpio.h" #include "driverlib/timer.h" // SPI #include "inc/hw_ssi.h" #include "driverlib/ssi.h" #include "driverlib/pin_map.h" void ClockSetup(void); void SetupSPI(void); void ADS1293_RegWrite(uint32_t adres,uint32_t value); uint32_t ADS1293_RegRead(uint32_t adres2); void ADS1293_Setup_3Lead(void); uint32_t read_value; uint32_t value; uint32_t value2; uint32_t inst1; uint32_t inst2; int i; #define ADS1293_WRITE_BIT (0x7F) #define ADS1293_READ_BIT (0x80) void ClockSetup(void){ SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_XTAL_16MHZ|SYSCTL_OSC_MAIN); } void SetupSPI(void){ SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI3); SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD); GPIOPinConfigure(GPIO_PD0_SSI3CLK); GPIOPinConfigure(GPIO_PD3_SSI3TX); GPIOPinConfigure(GPIO_PD2_SSI3RX); GPIOPinTypeSSI(GPIO_PORTD_BASE,GPIO_PIN_3|GPIO_PIN_0|GPIO_PIN_2);
SSIConfigSetExpClk(SSI3_BASE, SysCtlClockGet(), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 16000000, 16); SSIEnable(SSI3_BASE); GPIOPinTypeGPIOOutput(GPIO_PORTD_BASE, GPIO_PIN_1); GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_1, GPIO_PIN_1); } int main(void) { ClockSetup(); SetupSPI(); ADS1293_Setup_3Lead(); for(i=0;i<9;i++){ //replace 9 with 1 it doesn't work value2=ADS1293_RegRead(0x01); //reading 0x01 for example value2&=0x00FF; } } } void ADS1293_RegWrite(uint32_t adres,uint32_t value) { GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_1, 0); inst1 = ((ADS1293_WRITE_BIT & adres)<<8)|value; SSIDataPut(SSI3_BASE,inst1); while(SSIBusy(SSI3_BASE)); GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_1, GPIO_PIN_1); } uint32_t ADS1293_RegRead(uint32_t adres2) { GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_1, 0); inst2 = (ADS1293_READ_BIT | adres2)<<8; SSIDataPut(SSI3_BASE,inst2); while(SSIBusy(SSI3_BASE)); SSIDataGet(SSI3_BASE, &read_value); while(SSIBusy(SSI3_BASE)); GPIOPinWrite(GPIO_PORTD_BASE,GPIO_PIN_1, GPIO_PIN_1); return read_value; } void ADS1293_Setup_3Lead(void) { ADS1293_RegWrite(0x00,0x00); ADS1293_RegWrite(0x01,0x11); ADS1293_RegWrite(0x02,0x19); ADS1293_RegWrite(0x0A,0x07); ADS1293_RegWrite(0x0C,0x04); ADS1293_RegWrite(0x12,0x04); ADS1293_RegWrite(0x14,0x24); ADS1293_RegWrite(0x21,0x02); ADS1293_RegWrite(0x22,0x02); ADS1293_RegWrite(0x23,0x02); ADS1293_RegWrite(0x27,0x08); ADS1293_RegWrite(0x2F,0x30); }