我是嵌入式编程的新手,但我已经完成了编写一些C代码来编写可以发送命令的设备(16位字)的任务。在给我的规格表上,有一个具有某些"最小时间的部分"设备具有,例如“启用第一时钟设置时间= 150ns'”。还有其他时间,例如'时钟宽度= 50ns'等
该器件有三个主要引脚,EN,CLK和DATA。该设备最初被禁用,我正在考虑使用状态机来发送命令,但我对最小时间感到困惑。
所以我的问题是:
- 如何合并/补偿表格中列出的指定最短时间。
- 我如何模拟C中的延迟?
答案 0 :(得分:2)
这些最短时间 - 确保您符合规范的最简单方法。是超越他们!这只是需要更长的时间而不是最小 - 这很容易;如果这些是最大时间,那将很难。
如果接口是用软件实现的,那么在大多数情况下超过这些时序将是简单的,不仅处理器GPIO的频率限制可能使时序低于这种可能性,CPU指令周期时间和所需的指令数量生成信号可能会阻止你接近这些最小时间。
如果您使用SPI等硬件通信接口生成必要的信号,那么您可以进行更精确的控制,只需配置接口寄存器即可在规范中生成所需的 时机 - 你可以忽略它们的机会;如果您的处理器和GPIO 非常快,您可能需要考虑增加延迟;但如果您需要对给定的时间采取任何具体行动,我会感到非常惊讶。新的几十纳秒的延迟最好通过添加NOP指令实现,更长的延迟可能是一个繁忙的循环轮询定时器,或者更长的延迟仍在等待定时器中断同时做一些有用的事情。
重要的是,没有必要实现这些最小时间 - 只是不生成制造商规范 之外的信号。