Hi all,
I am trying to use my F28069M LaunchPad to read data from an ADC using SPI_A. I have set up the module using the Control Suite example as a starting point and making changes based on the datasheet. I have not yet gone as far as trying to interpret the incoming data, I am just trying to check that a clock is being produced using my oscilloscope. The pin that I expect the clock to be visible on is permanently at logic high whereas I'm expecting to see a clock of approximately 1.6MHz.
My GPIO initialisation code is as follows:
//--- Group B pins
GpioCtrlRegs.GPBCTRL.all = 0x00000000; // QUALPRD = SYSCLKOUT for all group B GPIO
GpioCtrlRegs.GPBQSEL1.all = 0x00000000; // No qualification for all group B GPIO 32-44
GpioCtrlRegs.GPBQSEL2.all = 0x00000000; // No qualification for all group B GPIO 50-58
GpioCtrlRegs.GPBDIR.all = 0x00000000; // All group B GPIO are inputs
GpioCtrlRegs.GPBPUD.all = 0x00000000; // All group B pullups enabled
GpioCtrlRegs.GPBDIR.bit.GPIO56 = 1; // Set GPIO56 to output direction
GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 0; // 0=GPIO 1=SDAA 2=EPWMSYNCI 3=ADCSOCAO
GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 0; // 0=GPIO 1=SCLA 2=EPWMSYNCO 3=ADCSOCBO
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 0; // 0=GPIO 1=COMP2OUT 2=rsvd 3=COMP3OUT
GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 0; // 0=GPIO (TDI) 1=rsvd 2=rsvd 3=rsvd
GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 0; // 0=GPIO (TMS) 1=rsvd 2=rsvd 3=rsvd
GpioCtrlRegs.GPBMUX1.bit.GPIO37 = 0; // 0=GPIO (TDO) 1=rsvd 2=rsvd 3=rsvd
GpioCtrlRegs.GPBMUX1.bit.GPIO38 = 0; // 0=GPIO/XCLKIN (TCK) 1=rsvd 2=rsvd 3=rsvd
GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 0; // 0=GPIO 1=rsvd 2=rsvd 3=rsvd
GpioCtrlRegs.GPBMUX1.bit.GPIO40 = 0; // 0=GPIO 1=EPWM7A 2=SCITXDB 3=rsvd
GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 0; // 0=GPIO 1=EPWM7B 2=SCIRXDB 3=rsvd
GpioCtrlRegs.GPBMUX1.bit.GPIO42 = 0; // 0=GPIO 1=EPWM8A 2=TZ1 3=COMP1OUT
GpioCtrlRegs.GPBMUX1.bit.GPIO43 = 0; // 0=GPIO 1=EPWM8B 2=TZ2 3=COMP2OUT
GpioCtrlRegs.GPBMUX1.bit.GPIO44 = 0; // 0=GPIO 1=MFSRA 2=SCIRXDB 3=EPWM7B
GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 0; // 0=GPIO 1=EQEP1A 2=MDXA 3=TZ1
GpioCtrlRegs.GPBMUX2.bit.GPIO51 = 0; // 0=GPIO 1=EQEP1B 2=MDRA 3=TZ2
GpioCtrlRegs.GPBMUX2.bit.GPIO52 = 0; // 0=GPIO 1=EQEP1S 2=MCLKXA 3=TZ3
GpioCtrlRegs.GPBMUX2.bit.GPIO53 = 0; // 0=GPIO 1=EQEP1I 2=MFSXA 3=rsvd
GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 0; // 0=GPIO 1=SPISIMOA 2=EQEP2A 3=HRCAP1
GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 0; // 0=GPIO 1=SPISOMIA 2=EQEP2B 3=HRCAP2
GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 1; // 0=GPIO 1=SPICLKA 2=EQEP2I 3=HRCAP3
GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 0; // 0=GPIO 1=SPISTEA 2=EQEP2S 3=HRCAP4
GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 0; // 0=GPIO 1=MCLKRA 2=SCITXDB 3=EPWM7A
And my SPI module initialisation code...
void InitSPI(void) //Initialises the SPI modules on the F2806x
{
SpiaRegs.SPICCR.bit.SPISWRESET=0; // Reset SPI
SpiaRegs.SPICCR.all=0x004F; // Active LOW clock, 16 bit characters
SpiaRegs.SPICTL.all=0x0007; // SPI Master Mode, Enable Transmission, Enable Interrupts
SpiaRegs.SPISTS.all=0x0000; // Clear the status register, resetting all flags.
SpiaRegs.SPIBRR=0x001B; // Set the Baud Rate to around 1.6Mbps
SpiaRegs.SPIFFTX.bit.SPIFFENA=0; // Disable Tx FIFO enhancements
SpiaRegs.SPIFFRX.bit.RXFFIENA=0; // Disable Rx FIFO interrupts
SpiaRegs.SPIFFCT.all=0x00;
SpiaRegs.SPIPRI.bit.TRIWIRE=0; //Disable three wire mode for standard 4 wire SPI
SpiaRegs.SPICCR.bit.SPISWRESET=1; // Enable SPI
}
I have used the debugger on CCS to verify that both of these pieces of code are being executed but there is still no sign of the clock signal on the pin.
Any ideas what's wrong?