【问题标题】:Embedded programming of a synthesizer with an external clock具有外部时钟的合成器的嵌入式编程
【发布时间】:2014-12-02 09:40:30
【问题描述】:

所以我的任务是编写一些伪代码来对频率合成器进行编程。我将使用三个主要端口,“启用”、“数据”和“时钟”。

器件最初处于关闭状态,当触发使能(低电平有效)时,时钟将循环(经过一些最短设置时间)。除了延迟,我还有一个函数 SendCommand(uint32_t addr, uint16_t data)。

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

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

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

暂时忽略程序的编写方面,它仍然只是伪代码。

【问题讨论】:

  • 你应该从写作开始,而不是阅读。但听起来你有类似于“串行外设接口”或“SPI”的东西。要以 10MHz 时钟速率执行此操作,您可能需要在许多微控制器中找到的硬件 SPI 引擎 - 如果您的系统没有,您可以使用远程微控制器作为代理。但是,如果您不需要高性能,大多数(尽管不是全部)此类设备将以低得多的时钟速率接收数据。如果您有可用的真实(非 USB)并行接口,则在软件中“位敲击”单个信号是一种常用技术。

标签: c embedded


【解决方案1】:

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

10MHz 规范只是支持的最大频率,或者更准确地说,它反映了时钟线下降沿之间的最小周期,即 1/10x106 或100ns。您将很难保持在软件中始终如一地实施 SPI 的速率。大多数微控制器都包含 SPI 硬件来自动输出 SPI 信号。问题What are the disadvantages of bit banging SPI/I2C in embedded applications 可能是唯一感兴趣的。 Here 是软件 SPI 实现的一个示例 - 您只需要写入功能,不需要读取,您可以将其扩展到 16 位,尽管您可以发送两个字节。

【讨论】:

    猜你喜欢
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 2021-06-03
    • 2020-09-22
    相关资源
    最近更新 更多