有关英飞凌SBC芯片TLE9263QX的中文讨论基本没有,我自己借助项目了解使用这个芯片,在此记录一下。
//houyawei 20250528
1.TLE9263QX资料的收集
1.1 规格书
1.2 开发工具 Config Wizard for SBC
1.3 官方参考原理图及PCB布局
1.4 示例代码
SBC-for-Arduinohttps://github.com/Infineon/SBC-for-ArduinoTLE9263-3BQX-with-Traveo
https://community.infineon.com/t5/Projects/Exploring-TLE9263-3BQX-with-Traveo-Starter-kit-CYTVII-B-E-1M-SK/ba-p/955829
1.5 官方社区
2.TLE9263QX库函数的生成
2.1 打开Config Wizard for SBC

红色是USB直接连官方开发板,界面直接可视化控制,我没有开发板。
绿色是生成函数库,用SPI通讯。
2.2根据需求配置勾选

我需要VCC2,VCC3打开,看门狗检测时间选择的1S,打开高边HS1-HS4。
2.3 导出库函数

3.TLE9263的相关参数
这点跟后面写程序息息相关,必须从官方文档查出,我在这里记录一些重要的参数
3.1 PIN48接地后上电,能让9263进入到开发模式,它内部会启动VCC1,VCC2,关闭看门狗,方便编写程序
3.2 spi通讯实用的16位数据传输,第二个边沿触发(下边沿),软件片选,1M波特率
3.3 想要使用VCC1给MCU供电,需要给INT PIN31引脚接电上拉,保证芯片VCC1常有电输出。
3.4 硬件部分

3.5 引出spi引脚,方便测试
3.6 stm32 的cubeMX配置
注意stm工程路径必须放在全英文路径下,不能包含中文,否则会导出失败。


4.TLE9263的函数移植
4.1 二进制改16进制
使用vscode Copilot,要求其将所有二进制数据按照格式改为16进制,注意核对,有的是10进制,AI也会修改。实际不需要。
4.2 不识别函数__builtin_ctz
#define SBC_BITPOSITION(sbc_bitmask) (__builtin_ctz(sbc_bitmask))
改为
static inline uint8_t SBC_BITPOSITION(uint32_t mask) {
uint8_t pos = 0;
while (mask && !(mask & 1)) {
mask >>= 1;
pos++;
}
return pos;
}
4.3 编写spi初始化函数
uint16_t SBC_SPI_TRANSFER16(uint8_t Upper, uint8_t Lower) {
//uint8_t txData[2] = //{Upper, Lower};
uint16_t txData = ((uint16_t)Lower << 8) | Upper;
//uint8_t rxData[2] = {0};
uint16_t rxData = 0;
uint16_t outdata = 0;
// 片选拉低,开始通信
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);
// SPI 发送并接收2字节
//HAL_SPI_TransmitReceive(&hspi1, txData, rxData, 2, HAL_MAX_DELAY);
HAL_SPI_TransmitReceive_16(&hspi1, &txData, &rxData, 1, HAL_MAX_DELAY);
// 组包为16位数据(高字节在前,低字节在后)
outdata = ((rxData & 0xFF00) >> 8) | ((rxData & 0x00FF) << 8);
// 片选拉高,结束通信
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_SET);
HAL_Delay(10);
return outdata;
}
之前用的HAL库函数里面的HAL_SPI_TransmitReceive()传输16进制,发现有问题,用网上封装的函数运行正常
4.4 9263初始化寄存器只有18个,库函数里面的其他寄存器需要注释掉,否则会初始化失败

4.5 分析工具:逻辑分析仪

这个很重要,之前没有这个工具,研究了半个多月也有问题。让公司申购了工具之后,一天就调试好了,还发现了stm32 HAL库的16位数据传输问题。
5.移植测试源码
感谢英飞凌社区的回复,很多技术讨论都是从社区看到的,这个帖子是我发起的。