Configuring the SPI 

inital SPI.jpg

 

void SPIBus :: initHardware(void)
{
    // Configuring the SPI B

    SpibRegs.SPICCR.bit.SPISWRESET = 0; // enter RESET state
    SpibRegs.SPICTL.bit.MASTER_SLAVE = 1;   // 1:master 0:slaver mode
    SpibRegs.SPICCR.bit.CLKPOLARITY = 1;    // data latched on rising edge
    SpibRegs.SPICTL.bit.CLK_PHASE = 0;  // normal clocking scheme

    // set desired baud rate (SPIBRR)
    // SPIBBR = (LSPCLK/ SPIBaurdRate) -1

    SpibRegs.SPIBRR.bit.SPI_BIT_RATE = ((default_LSPCLK / tm1638BaudRate) - 1);

    SpibRegs.SPICCR.bit.HS_MODE = 0;    // 0:Standard SPI Mode, 1= High Speed SPI Mode
    setEightBits();                     // set SPI character length 8-bit word (SPICHAR)

    // clear SPI flag
    SpibRegs.SPISTS.bit.INT_FLAG = 0;
    SpibRegs.SPISTS.bit.OVERRUN_FLAG = 0;
    setThreeWire(); // enable 3-wire mode
    SpibRegs.SPICCR.bit.SPISWRESET = 1; // clear reset state; ready to transmit

    EALLOW;

    // Set up muxing for SPIB pins for TMS320F23879D
    GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 0b11; // select SPIB_SIMO on GPIO63
    GpioCtrlRegs.GPBGMUX2.bit.GPIO63 = 0b11;

    GpioCtrlRegs.GPCMUX1.bit.GPIO64 = 0b11; // select SPIB_SOMI on GPIO64
    GpioCtrlRegs.GPCGMUX1.bit.GPIO64 = 0b11;

    GpioCtrlRegs.GPCMUX1.bit.GPIO65 = 0b11; // select SPIB_CLK on GPIO65
    GpioCtrlRegs.GPCGMUX1.bit.GPIO65 = 0b11;

    EDIS;
}

創作者介紹
創作者 Dennis的學習筆記 的頭像
Dennis

Dennis的學習筆記

Dennis 發表在 痞客邦 留言(0) 人氣( 15 )