Configuring the SPI

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;
}
請先 登入 以發表留言。