This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] MSPM0C1104:如何在 CCS 中配置配置配置以启用曼彻斯特编码、从而实现有效发送和接收。

Guru**** 2553450 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1542133/mspm0c1104-how-to-configure-the-config-in-ccs-to-enable-manchester-encoding-for-effective-transmission-and-reception

器件型号:MSPM0C1104


工具/软件:

我 定义了 一个 密钥 命令。   点击 该 键后、        将  触发用于移动数组的 DMA 指令 、并  通过 TIMER_PWM 输出。   通信 速率 为  每 位 5us、    每 5us 转换一次。  也许      我  在 CCS_CONFIG 中的配置有问题。  我  不知道 为什么   我 要  发送的波形 不 出现。  相反、 会   出现重复波形  、  发送 不会 停止。        移动     我的 数组中的所有数据后发送无法结束、 您能否 提供 一个 成功的 示例  、说明在           配置 CCS_Config 时发送 5us 脉冲更改供我参考?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    结束  5 μ s 脉冲 更改
     

    5 μ s 变化意味着什么? 希望生成具有占空比变化的 PWM?

    您能告诉我您想要的波形结果是什么吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我使用按钮按下操作来控制曼彻斯特通信指令的发送。 我将指令 0、1、0、1、1 0、1、0、0、1、 数组中的 0、1、用于发送。 由于从 5us 低电平到 5us 高电平转换被视为高电平转换、反之亦然、因此我想使用 PWM 输出不同的波形。 但是、电流现象是异常的。 就是这样。 我希望实现以下目标:按下按钮时、DMA 会以 100k 的速率将指定的波形从阵列传输到 TIMER_PWM、并在输出完成后停止发送。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我仍然不清楚 PWM 控制的样子。 例如 0:表示具有 1 个周期的 20%占空比 PWM。 1:表示具有 1 个周期的 60%占空比 PWM。  如果您只需要一个周期的 PWM 信号、我建议您使用其他方法来实现。

    一种方法是使用 SPI  

    2.二是直接控制 GPIO。 对于通信、我建议您使用 DMA 通过计时器帮助来直接访问 GPIO。 下面是一个示例:

    e2e.ti.com/.../C_5F00_G3507_5F00_8bitComm.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    void TIMER_0_INST_IRQHandler (void){
     switch (DL_TimerG_getPendingInterrupt (TIMER_0_INST)){
     用例 DL_TIMERG_IIDX_ZERO:
     /*发送编码程序*/
      TIMER_COUNT++;
      if (timer_count == send_buff[array_count]){
       DL_GPIO_togglePins (GPIO_OPB9000_CAL_PORT、GPIO_OPB9000_CAL_PIN);
       array_count++;
       if (array_count >= array_len){
        DL_TimerG_STOPCounter (TIMER_0_INST);
       }
      }

      // DL_GPIO_togglePins (GPIO_OPB9000_CAL_PORT、GPIO_OPB9000_CAL_PIN);
      
      休息
     默认值
      休息
     }
    }
    不过、正如我所写的、目前我使用计时器的中断来定期切换 IO 端口。 我可以控制 IO 端口切换的持续时间、以达到我需要的波形、例如 5us 高电平到 5us 低电平、并且它可以自由切换。 因此、这种方法有一个缺点、那就是 IO 端口的切换速度不够。 因此、我需要使用 DMA 将数据传输到 TIMER_PWM。 这样、就不需要涉及 CPU、它应该能够实现更快的通信。 我目前所做的相当于模拟 DMA。 我不知道如何在 CCS 中配置 DMA、以传输数组中的数据、实现不同的高低电平切换、谢谢。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您能参考我与您分享的代码示例吗? 那么您不需要使用中断。