一、说明
此芯片为思路底边驱动新片,使用SPI总线配置。
二、SPI驱动配置
1、端口配置:如下,本文使用的是S32K144芯片开发。
#define TLE_SCK(x) (x?(PTE->PSOR |= 1<<PTE0):(PTE->PCOR |= 1<<PTE0))
#define TLE_MOSI(x) (x?(PTB->PSOR |= 1<<PTB4):(PTB->PCOR |= 1<<PTB4))
#define TLE_CS(x) (x?(PTB->PSOR |= 1<<PTB5):(PTB->PCOR |= 1<<PTB5))
#define TLE_MISO() (PTD->PDIR & (1<<PTD16))
#define TLE_RST(x) (x?(PTC->PSOR |= 1<<PTC11):(PTC->PCOR |= 1<<PTC11))
2、SPI程序
SPI是全双工语言,读写一体。
uint16_t SPI_WriteReadValue(uint16_t value)
{
unsigned char i=0;
uint16_t Result=0;
TLE_SCK(0);
Delay_ns(8);
for(i = 0;i<16;i++)
{
TLE_SCK(1);
Delay_ns(8);
if(value & 0x8000) TLE_MOSI(1);
else TLE_MOSI(0);
value <<= 1;
Result <<=1;
if(TLE_MISO()) Result |= 0x0001;
else Result &=0xfffe;
TLE_SCK(0);
Delay_ns(8);
}
TLE_SCK(0);
return Result;
}
三、TLE9104驱动
说明:CS需要参与命令时序,一次CS一次命令,详见驱动程序。
/*
* TLE9104读写命令
* 说明:本次写的命令,到下一次命令才会返回有效值,
* 命令回复如下格式:
* 命令:cmd1 cmd2 cmd3 ...
* 回馈:ICID back1 bcak2 ...
*/
uint16_t TLE9104SN_WriteReadCmd(uint16_t value)
{
uint16_t temp=0;
TLE_CS(0); /*CS_lead time 250ns*/
Delay_ns(40); /*40*14ns = 560ns*/
temp = SPI_WriteReadValue(value); /*写命令*/
Delay_ns(40); /*560ns*/
TLE_CS(1); /*CS_td >1us*/
Delay_us(50); /*Tcsn(td) 延迟到max,后续再调整*/
return temp;
}