MCU Subsystem
Distance2Go的主控MCU是Infineon自家的XMC4200。芯片内部结构框图如下:
从图中可以简要的了解XMC4200的基本特性: · 基于ARM Coretex-M4内核,支持 DSP和MAC指令集,并带有FPU · SysTick系统定时器,用以支持操作系统 · MPU(Memory Protection Unit),和MMU不同只支持访问Memory的权限设置而不支持虚拟地址映射 · 8通道通用DMA · 16KB Boot ROM + 256KB Flash + 16KB Program SRAM +24KB Data SRAM · USB2.0 Device控制器,内部集成USBPHY · USIC(Universal SerialInterface Channels)模块支持UART、SPI/QSPI、IIC、IIS和LIN总线 · CAN总线控制器,支持Full-CAN/Basic-CAN,60 MOs,速度1Mbit/s · 两个12-bit 8-channel ADC · 一个12-bit 2-channel DAC · 一个CCU8(Capture/CompareUnit)模块和两个CCU4模块,CCU4可作为通用定时器,CCU8用于电机控制和DCDC控制
XMC4200的MCU子系统和一般MCU无异,这里需要特别说明的是ADC和DAC接口,也就是参与BGT24MTR11 IF接口数据采集和VCO控制的部分。
XMC4200的DAC控制器提供了两个输出通道,分别连接IO P14.8和P14.9,可以用于BGT24MTR11 VCO控制提供FM时钟。如前面所说,由于Distance2Go默认使用TI PLL芯片控制VCO来保证精度和抖动,需要用户手动焊接一批电阻才能使用DAC控制VCO。使用MCU控制VCO需要用户通过软件实现环路算法,但Infineon官方并不提供软环路算法代码。而且受到软件环路带宽和实时性限制,必然会造成精度问题并引入抖动,因此只在低精度要求和BOM成本敏感场合使用。
XMC4200的ADC使用了4个通道分别连接IFI_LG 、IFI_HG、IFQ_LG 、IFQ_HG,具体连接方式如下表:
另外MCU还有一些IO连接到PLL的Trigger引脚上。由此可以推测出MCU的数据采样模式,即由硬件PLL在调频开始时触发MCU定时器,通过定时器触发等间隔ADC采样,ADC采样结果由DMA推送至MCUSRAM,在一组或者几组采样完成后再进行处理。
这样做的好处是做CPUoffloading,可以让CPU专心处理数据,同时尽可能降低软件给采样周期带来的抖动,从而提高测量结果精度。
MCU连接PLL的IO如下表,由于PLL的IO引脚是软件可配的复用IO,具体功能在以后做软件分析的时候再做分析吧。
Clocking
整个系统的工作时钟来自一个40MHz的SPXO(有源晶振),由VCC_3V3_PLL电源域供电,其EN引脚默认NC,因此只要上电就会输出时钟。40MHz输出经过适当匹配分出两路给PLL和MCU使用。
Distance2Go的时钟核心是PLL和VCO。这里采用了TI LMX2491 RF PLL,带有锯齿波、三角波发生器,可以直接用于FMCW雷达。从PLL内部框图中可以看出,PLL工作需要一个参考源,即左侧的OSCin时钟。VCO的输出从Fin反馈至PLL,在PLL内部与参考时钟进行相位比较(鉴相),根据比较结果控制电荷泵输出电压至CPout,经过硬件环路滤波器控制VCO频率。
PLL支持自动控制VCO产生锯齿或三角形调频,并在不同的阶段发送Trigger信号。这里是一个TI给出的PLL CPout和Trigger示例,紫色为CPout输出并经过环路滤波的电压,红色和绿色信号用于指示Ramp开始上升或下降,MCU可以用这些信号Trigger ADC采样。
下图中红圈中即为阻容网络搭建的环路滤波器,据Infineon的AN介绍,该滤波网络可以实现-88dBc/Hz低相噪性能(offset freq:10KHz-1MHz)。
|