This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
My problem is summarized as follows.
I have done the serial communication (serial peripheral interface: SPI) between two microcontroller TMS320F28335, one a master and the other as slave.
The communication is stable for a number integer, but when I try to transfer a number of real type, such as number 0.707, i get only 0.0 in master.
I like to have the same number as master and slave,
thank you for helping me find a solution to this problem.
Here are some of the master program
while(1)
{
GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 0;
SpiaRegs.SPITXBUF = a;
while (SpiaRegs.SPISTS.bit.INT_FLAG == 0)
GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 1;
a=SpiaRegs.SPIRXBUF;
GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 1;
while(CpuTimer0.InterruptCount == 0);
CpuTimer0.InterruptCount = 0;
EALLOW;
SysCtrlRegs.WDKEY = 0x55; // service WD #1
EDIS;
}
}
void Gpio_select(void)
{
EALLOW;
GpioCtrlRegs.GPAMUX1.all = 0; // GPIO15 ... GPIO0 = General Puropse I/O
GpioCtrlRegs.GPAMUX2.all = 0; // GPIO31 ... GPIO16 = General Purpose I/O
GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 1; // SPIA pin SPISIMOA enabled
GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 1; // SPIA pin SPISOMI enabled
GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 1; // SPIA pin SPICLKA enabled
GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 1; // SPIA pin SPISTEA enabled
GpioCtrlRegs.GPBMUX1.all = 0; // GPIO47 ... GPIO32 = General Purpose I/O
GpioCtrlRegs.GPBMUX2.all = 0; // GPIO63 ... GPIO48 = General Purpose I/O
GpioCtrlRegs.GPCMUX1.all = 0; // GPIO79 ... GPIO64 = General Purpose I/O
GpioCtrlRegs.GPCMUX2.all = 0; // GPIO87 ... GPIO80 = General Purpose I/O
EDIS;
}
void SPI_Init(void)
{
SpiaRegs.SPICCR.bit.SPISWRESET = 0; // Reset SPI
SpiaRegs.SPICCR.bit.CLKPOLARITY = 1; // Data Out falling / In rising edge
// SPICLK passive = high
SpiaRegs.SPICCR.bit.SPILBK = 0; // no loobback mode
SpiaRegs.SPICCR.bit.SPICHAR = 15; // 16 characters
SpiaRegs.SPICCR.bit.SPISWRESET = 1; // relinq. from reset
SpiaRegs.SPICTL.bit.CLK_PHASE = 0; // no clock delay
SpiaRegs.SPICTL.bit.MASTER_SLAVE = 1;// SPI - Master
SpiaRegs.SPICTL.bit.TALK = 1; // enable TALK
SpiaRegs.SPICTL.bit.SPIINTENA = 0; // no SPI-Interrupts enabled
SpiaRegs.SPICTL.bit.OVERRUNINTENA =0;// overrun interrupt disabled
SpiaRegs.SPIBRR = 0x124;
}