Hi, Alban,
Thanks for your feed back. I used 9s12DG256. The SPI I already used successfully is SPI0, the pins for it is 93,94, 95,96. I plan to use SPI2, the pins for it is 32, 33, 34, 35. The SPI0 source code is as the following:
void
M1_SPI_Out ( unsigned char Current1_uc, unsigned char Current2_uc )
{
unsigned char SPI_Data_HIGH_Tmp; //SPI out data High
unsigned char SPI_Data_LOW_Tmp; //SPI out data LOW
if(M1_Current1_Tmp_uc != Current1_uc) //if coil1 current changed
{
// Motor1 Coil1
PTS &= ~PTS3_msk; //clear pin3 of port S to select SPI for the first TLV5627
SPI_Data_HIGH_Tmp = (unsigned char)(0x10 + ((Current1_uc & 0xF0) >> 4));
SPI_Data_LOW_Tmp = (unsigned char)((Current1_uc & 0x0F) << 4);
DelayTmp(10); //delay
PTS &= ~PTS2_msk; //clear pin2 of port S to make FS = 0
SPI0DR = SPI_Data_HIGH_Tmp; // send the High byte data of SPI Data
while(!(SPI0SR & SPTEF0_msk)); //wait till data transfer finish
SPI0DR = SPI_Data_LOW_Tmp; // send the Low byte data of SPI Data
while(!(SPI0SR & SPTEF0_msk )); //wait till data transfer finish
PTS |= PTS2_msk; //SET pin2 of port S to make FS = 1
DelayTmp(10); //delay
PTS |= PTS3_msk; //SET pin3 of port S to deselect SPI for the first TLV5627
M1_Current1_Tmp_uc = Current1_uc;
}
DelayTmp(50); //delay
if (M1_Current2_Tmp_uc != Current2_uc) //if coil2 current changed
{
// Motor1 Coil2
PTS &= ~PTS3_msk; //clear pin3 of port S to select SPI for the first TLV5627
SPI_Data_HIGH_Tmp = (unsigned char)(0x50 + ((Current2_uc & 0xF0) >> 4));
SPI_Data_LOW_Tmp = (unsigned char)((Current2_uc & 0x0F) << 4);
DelayTmp(10); //delay
PTS &= ~PTS2_msk; //clear pin2 of port S to make FS = 0
SPI0DR = SPI_Data_HIGH_Tmp; // send the High byte data of SPI Data
while(!(SPI0SR & SPTEF0_msk)); //wait till data transfer finish
SPI0DR = SPI_Data_LOW_Tmp; // send the Low byte data of SPI Data
while(!(SPI0SR & SPTEF0_msk )); //wait till data transfer finish
PTS |= PTS2_msk; //SET pin2 of port S to make FS = 1
DelayTmp(10); //delay
PTS |= PTS3_msk; //SET pin3 of port S to deselect SPI for the first TLV5627
M1_Current2_Tmp_uc = Current2_uc;
}
} // end
I used TLV5627 as SPI DAC out.
The initilize for SPI0 is
SPI0CR1 = /*SPIE0_msk + */SPE0_msk/* + SPTIE0_msk */+ MSTR0_msk + CPHA0_msk; //SPE bit enable the SPI Module
SPI0CR2 = 0;//BIDIROE0_msk; //enable Master out
SPI0BR = 0;//0x25; // SPI baud rate = bus clock /32 = 8MHz / 32 .
I will use another message to submit.