2014-10-07 27 views
1

所以我有一个任务来编写一些伪代码来编程一个频率合成器。有三个主要端口可供我使用,'启用','数据'和'时钟'。用外部时钟嵌入式编程合成器

设备初始关闭,当启用(低电平有效)被触发时,时钟将循环(经过一些最小设置时间后)。除了延迟,我将有一个函数SendCommand(uint32_t addr,uint16_t data)。

我遇到的问题是,在给我的规范中,数据在下降时钟边沿是“读取”。这意味着数据按参数中定义的地址逐个读入到寄存器中,并一直保持读取状态,直到整个16位字被写入寄存器。时钟周期约为10MHz。我的问题是:

- 如何模拟时钟以10MHz(100 ns /周期)循环?

- 如何在所述时钟的下降沿执行“数据读取”。

现在忽略程序的写作方面,它仍然只是伪代码。

+0

你应该从写作开始,而不是阅读。但它听起来像你有类似于“串行外设接口”或“SPI”的东西。要以10MHz的时钟频率完成这项工作,您可能需要一个硬件SPI引擎,如许多微控制器中所发现的 - 如果您的系统没有,可以使用一个远程微控制器作为代表。但是,如果你不需要高性能,大多数(尽管不是全部)这样的设备将以更低的时钟速率接收数据。如果你有一个真实的(非USB)并行接口,软件中的单个信号是一种常见的技术。 – 2014-10-07 21:10:18

回答

0

频率合成器芯片通常使用没有MISO线(即只写SPI)的SPI接口。 SPI是一个同步通信接口,因此时钟频率不是关键;一个位将在CLOCK信号的下降沿(在这种情况下)被移入,但是当该边缘发生时无关紧要 - 接收器将无限期地等待 - 它甚至不需要固定。

10MHz的规范将简单地是最大频率支撑,或更准确地反映了它在时钟线的下降沿之间的最小时间段,为1/10×10 6 100ns的。你很难推动维持这个速度,一致地在软件中实现SPI。大多数微控制器都包含SPI硬件来自动输出SPI信号。问题What are the disadvantages of bit banging SPI/I2C in embedded applications可能是唯一的兴趣。 Here是一个软件SPI实现的例子 - 你只需要写功能,而不是读,并且你可以将它扩展到16位,尽管你可以同样发送两个字节。