ZHCAB74D September   2018  – March 2022 AFE030 , AFE031 , TMS320F28075 , TMS320F28075-Q1 , TMS320F28076 , TMS320F28374D , TMS320F28374S , TMS320F28375D , TMS320F28375S , TMS320F28375S-Q1 , TMS320F28376D , TMS320F28376S , TMS320F28377D , TMS320F28377D-EP , TMS320F28377D-Q1 , TMS320F28377S , TMS320F28377S-Q1 , TMS320F28379D , TMS320F28379D-Q1 , TMS320F28379S

 

  1.   商标
  2. FSK 概述
  3. 硬件预览
    1. 2.1 方框图
    2. 2.2 硬件设置
  4. 连接 AFE03x
    1. 3.1 配置 AFE031
  5. 发送路径
    1. 4.1 FSK 示例规格
    2. 4.2 PWM 模式
      1. 4.2.1 软件实现
      2. 4.2.2 测试结果
      3. 4.2.3 HRPWM 与 EPWM
    3. 4.3 DAC 模式
      1. 4.3.1 软件实现
      2. 4.3.2 测试结果
      3. 4.3.3 OFDM 功能
    4. 4.4 将 TX 移植到 LAUNCHXL-F280049C
      1. 4.4.1 特定于 PWM 模式的移植
      2. 4.4.2 特定于 DAC 模式的移植
  6. 接收路径
    1. 5.1 接收路径概述
    2. 5.2 接收器软件实现
      1. 5.2.1 初始设置和参数
      2. 5.2.2 中断服务例程
      3. 5.2.3 运行时工作
      4. 5.2.4 测试结果
      5. 5.2.5 系统利用率
      6. 5.2.6 器件相关性和移植
    3. 5.3 调优和校准
      1. 5.3.1 设置 AFE03X 的 PGA
      2. 5.3.2 自动增益控制 (AGC)
      3. 5.3.3 设置位检测阈值
      4. 5.3.4 FSK 相关性检测器库
    4. 5.4 将 RX 移植到 LAUNCHXL-F280049C
  7. 连接电源线
    1. 6.1 线路耦合
    2. 6.2 耦合到交流线路
      1. 6.2.1 低压电容器
      2. 6.2.2 变压器的匝数比
      3. 6.2.3 高压电容器
      4. 6.2.4 高压侧电感器
    3. 6.3 耦合到直流线路
    4. 6.4 保护电路
      1. 6.4.1 金属氧化物压敏电阻
      2. 6.4.2 瞬态电压抑制器
      3. 6.4.3 导流二极管
    5. 6.5 确定 PA 电源要求
  8. 总结
  9. 参考文献
  10. 原理图
    1. 9.1 原理图(PWM 模式)
    2. 9.2 原理图(DAC 模式)
  11. 10修订历史记录

软件实现

引用的示例程序:boostxl_afe031_f28379d_dacmode

若要在软件中启用 DAC 模式,需要完成以下流程:

  • 启用 AFE 的内部 DAC 发送模式。
    • 若要启用 PWM 发送模式,请将使能寄存器中的 TX 和 PA 位设置为 1,并将 DAC 位设置为 0。
    • 软件示例函数:HAL_afe031_txDACEnable();
  • 通过 GPIO 切换启用 DAC 发送模式并配置 SPI 的字长。
    • 将连接 DAC 引脚的 GPIO 设置为 1。
    • 将 SPI 通信的字长设置为 10 字节。
    • 软件示例函数:HAL_afe031_dacEnable();

在 DAC 模式下发送信息的方式与 PWM 模式的工作方式非常相似。一个 PWM 源用于将 DAC 模式值设置为发出的正弦斜坡的正确值。第二个 PWM 用于比特率以产生中断并确定需要输出的频率。

如果尝试使用该实现来达到非常精确的频率,则必定会出现问题。可以通过Equation1 来查看该问题。

Equation1. 正弦表中的阶跃数 =(中断频率)/(所需信号的频率)

如果尝试生成 131.25kHz,那么只能更改两个变量。一种方法是在正弦表中设置阶跃数。例如,如果正弦表中有 10 个阶跃,则中断频率为:

中断频率 =(正弦表中的阶跃数)*(所需信号的频率)

中断频率 = 1.3125MHz

在使用 200MHz 时钟时,即使在 152 或 153 个 CPU 周期中发生中断,中断频率也将分别为 1.31579MHz 和 1.30719MHz。这些频率不处于表 4-1 中频率容差的规格范围之内。这意味着设置阶跃大小无法正确实现精确的频率生成。

另一种思路是设置中断频率。让我们将中断设置为 1MHz,这是可以生成的频率。正弦波中的阶跃数将是:

正弦表中的阶跃数 = (1MHz)/(131.25kHz)

正弦表中的阶跃数 = 7.61905

利用 F28379D 的浮点功能,处理器可以跟踪该余数,现在精度取决于正弦表,而不是 1MHz 时钟。可以使用以下公式来确定阶跃大小:

阶跃大小 =(正弦表中的点数)/(正弦表中的阶跃数)

利用 4096 正弦表并继续执行前一个示例,这样可以将阶跃大小确定为 537.6。这意味着在每次中断中,正弦表都会再产生 537.6 的阶跃。程序将对数组进行排序,因此该数字将去尾取整为 537,但添加该数字后、程序在正弦表中移动时,下一个阶跃将忽略阶跃大小的小数部分。下面显示了一个中断例程示例:

  • //Transmit next data point in sine wave.Also convert float SinePosition to unsigned int
    • Uint16 temp = sinePosition;
    • HAL_spi_xmt((sineTable[temp]) );
  • //Calculate next step
    • sinePosition += sineStep; }
  • //Check for overflow
    • if(sinePosition > 4095)
    • { sinePosition -= 4095; }

需要注意的一点是,在该实现中创建了一个 1MHz 中断,它仅将数据从一个存储器地址移动到另一个存储器地址。一种降低 CPU 密集操作的方法是利用 C2000 的 DMA(直接存储器访问)。DMA 外设根据触发事件将数据从一个存储器地址移动到另一个存储器地址。使用被选为通过 SPI 发送的正确数据来预填充两个缓冲区,并使用 DMA 在两者之间进行切换。当从一个缓冲区切换到另一个缓冲区时,旧缓冲区中将重新填充这些值。

在 DAC 模式软件中,使用一个 1MHz PWM 信号来生成一个 DMA 事件,将数据从这些缓冲区之一移动到 SPI TX 缓冲区中。每次使用后都需要重新填充旧缓冲区,因此 DMA 将在每次完成整个缓冲区读取后触发一个事件。在该中断期间,会对缓冲区进行切换,旧缓冲区被重新填充。通过该实现,可以调整 CPU 利用率与存储器之间的权衡点,并且可以相应地调整缓冲区的大小。如果有额外的存储器,则可以通过使用更大的缓冲区来减少 CPU 开销。如果没有大量的可用存储器,则较小的缓冲区大小会增加 CPU 开销。

PWM2 中断以与 PWM 模式软件实现完全一样的方式处理 FSK 协议的所有需求。要实现的协议是可重复的模式,它允许软件基于周期数。一个周期数是一位的时长。在该实现中,将发送 33 位(每个字 11 位,三个字)。在每个周期中,通过检查下一位的值和阶跃大小变化,能够以标记频率或空间频率发送正弦表。33 个周期之后,系统停止发送 DAC 值并进入静默模式。209 个周期之后,周期数将被重置,软件开始再次发送数据包。在由 PWM2 中断来处理 FSK 传输的情况下,CPU 的主要功能被释放,可用于其他应用。默认情况下,软件示例将发送表 4-1 中引用的 packet_1,但可以通过将 packet_to_send 变量设置为零来将其更改为 packet_0。