目前共有4篇帖子。 字體大小:較小 - 100% (默認)▼  內容轉換:不轉換▼
 
點擊 回復
23 3
tlsr8258的spi slave模式很不安全
一派掌門 二十級
1樓 發表于:2026-2-2 14:03
因为外部主机可以随意改写tlsr8258里面的任何内存地址。
如果spi传输出现错误,那么tlsr8258很容易死机。
一派掌門 二十級
2樓 發表于:2026-2-2 14:05
 
一派掌門 二十級
3樓 發表于:2026-2-2 14:07

TLSR8258 SPI Slave模式收发数据的方法:

https://zhuanlan.zhihu.com/p/2000671936779403382

 
一派掌門 二十級
4樓 發表于:2026-2-2 14:07
TLSR8258的硬件SPI支持slave模式,但是并不是很安全。因为SPI master端可以随意改写TLSR8258任意内存中的任意数据,很容易把TLSR8258搞死机。
SPI master端必须按照下面的格式发数据:
第1字节:TLSR8258内存地址第23-16位。
第2字节:TLSR8258内存地址第15-8位。
第3字节:TLSR8258内存地址第7-0位。
第4字节:传输方向。
master->slave是0x00,slave->master是0x80。
第5~n字节:具体的数据内容(可以没有这一段)。
也就是说,SPI master端必须至少发送4字节的数据。前3个字节是TLSR8258的内存地址。如果内存地址不正确,会把SRAM

里面的数据破坏掉,然后TLSR8258就会死机。所以TLSR8258 SPI的slave模式非常不安全。

SDK版本:tc_platform_sdk-V3.3.1


为了方便演示,在TLSR8258的PB2-5上用GPIO模拟SPI master,然后用杜邦线连接到PD2、PD7、PB7和PB6上的硬件SPI从机。
SPI连线:
// GPIO模拟SPI主机 ----> 硬件SPI从机
#define GPIO_SPI_MASTER_CS GPIO_PB2 // 连接TLSR8258_CS (PD2)
#define GPIO_SPI_MASTER_CLK GPIO_PB3 // 连接TLSR8258_SCLK (PD7)
#define GPIO_SPI_MASTER_MISO GPIO_PB4 // 连接TLSR8258_SDO (PB7)
#define GPIO_SPI_MASTER_MOSI GPIO_PB5 // 连接TLSR8258_SDI (PB6)

TLSR8258上开了两个缓冲区。
volatile unsigned char spi_slave_buffer[2][64] __attribute__((section(".spi_slave_buff")));
#define spi_slave_rxbuf spi_slave_buffer[0] // 接收缓冲区
#define spi_slave_txbuf spi_slave_buffer[1] // 发送缓冲区
整个spi_slave_buffer数组的大小是128字节,前64字节用作接收缓冲区,后64字节用作发送缓冲区。

打开编译后的tc_platform_sdk-V3.3.1/project/tlsr_tc32/B85/PM_Demo/PM_Demo.lst,可以看到spi_slave_buffer数组的起始地址是0x4133c。
0084133c g O .my_code 00000080 spi_slave_buffer
所以slave接收缓冲区的地址是0x4133c,slave发送缓冲区的地址是0x4133c+64=0x4137c。
master在给slave发数据的时候,slave是在接收数据,所以前三个字节为0x04,0x13,0x3c,第四个字节为0x00。
u8 data1[68] = {0x04, 0x13, 0x3c, 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66};
master在接收slave的数据的时候,slave是在发送数据,所以前三个字节为0x04,0x13,0x7c,第四个字节为0x80。slave要提前在发送缓冲区(spi_slave_txbuf)里面放好数据内容。
u8 data2[68] = {0x04, 0x13, 0x7c, 0x80};

TLSR8258的硬件SPI只支持半双工通信。只有slave模式才支持中断

,master模式是不支持中断的。
硬件SPI slave模式检测到CS上升沿后,就会触发一次中断,执行irq_handler函数。但是在函数中,没有办法判断master端的传输方向,也没有办法获取数据的长度。
 

回復帖子

內容:
用戶名: 您目前是匿名發表
驗證碼:
(快捷鍵:Ctrl+Enter)
 

本帖信息

點擊數:23 回複數:3
評論數: ?
作者:巨大八爪鱼
最後回復:巨大八爪鱼
最後回復時間:2026-2-2 14:07
 
©2010-2026 Purasbar Ver2.0
除非另有聲明,本站採用創用CC姓名標示-相同方式分享 3.0 Unported許可協議進行許可。