乐鑫技术交流
直播中

硬件工程师1

11年用户 1664经验值
擅长:可编程逻辑
私信 关注
[问答]

求助,有什么方法可以得到一个27MHz HSPI SCLK和2:1 mark:space ratio?

我在主模式下使用 HSPI 外围设备与另一个设备通信。我想尽可能快地运行它,另一个设备可以处理 26.667MHz,即 80MHz 除以 3。我使用 SPI 模式 1,因此数据在 SCLK 的上升沿发生变化并在下降沿锁存。SCLK 高电平持续 12.5ns,低电平持续 25ns,但不幸的是,另一个设备在上升沿之后最多需要 15ns 才能在 MISO 上生成数据。所以我真的需要 SCLK 变高 25ns 而变低 12.5ns。
有什么办法可以做到这一点?我在写入 SPICLK 寄存器的数据上尝试了以下变化,结果如下(HLL = 时钟高电平持续 12.5ns,然后时钟低电平持续 2 * 12.5ns):
SPI1CLK = (2 << 12) | (2 << 6) | 2; // 失败,时钟保持高电平
SPI1CLK = (2 << 12) | (2 << 6) | 1; // 失败,时钟变为 HLHLL
SPI1CLK = (2 << 12) | (2 << 6) | 0; // 工作但时钟变为 HLL
SPI1CLK = (2 << 12) | (1 << 6) | 2; // 工作但时钟变为 HLL
SPI1CLK = (2 << 12) | (1 << 6) | 1; // 失败,时钟为 80MHz
SPI1CLK = (2 << 12) | (1 << 6) | 0; // 失败,时钟变为 HLHLL
SPI1CLK = (2 << 12) | (0 << 6) | 2; // 失败,时钟变为 HLHLL
SPI1CLK = (2 << 12) | (0 << 6) | 1; // 工作但时钟变为 HLL
SPI1CLK = (2 << 12) | (0 << 6) | 0; // 失败,时钟是 80MHz
我想我可以通过使用 SPI 模式 0 来绕过它,但如果我这样做,那么 ESP8266 会反转时钟信号,这样我就可以得到 25ns 的高电平和 12ns。

更多回帖

发帖
×
20
完善资料,
赚取积分