这是一个奇怪的场景。我们使用x86 soc作为主机,使用stm8s MCU作为客户端。它们通过GPIO(sOC侧)和RST和SWIM(MCU侧)之间的2条线连接。因此,我们可以通过SWIM协议重新刷新MCU固件。
这是问题所在。在我们进入SWIM模式后(通过低频gpio操作输入序列很容易UP / DOWN),我们需要将数据发送到MCU。但协议需要以高频率(16M时钟)发送数据。我尝试了一个简单的gpio操作,没有延迟:
for(i=0; i<10; i++) {
gpio_set_value(SWIM, 0);
gpio_set_value(SWIM, 1);
}
但在示波器上,UP / DOWN脉冲将延迟2ns。我认为这可能是io速度限制或其他一些系统原因。正如SWIM协议所说,发送数据的最小延迟约为0.25ns。
有没有办法加快GPIO运营?或者我们是否有一些特殊的方法来应用这个请求?
BTW:我们在soc上使用linux。