主题中讨论的其他器件:SysConfig、 TMDSFSIADAPEVM
背景
运行1引线、7节点 FSI 菊花链与应用手册中类似、具有相似的1引线和8节点。
我已经了解了示例代码、并且能够获得与应用手册类似的 PWM 抖动测量值。
我要使用 SysConfig board.h/.c 将主控和节点代码移至新项目中以执行初始化。
我的电流配置也相当粗略、在通信隔离板上工作时、使用 Dupont 式跳线将板对板进行布线、其中我将运行25MHz FSI 时钟 (这还有助于更轻松地调试菊花链如何使用逻辑分析仪初始化和响应节点复位等)
观察结果
FSI 的 SysConfig 部分不包括用于将 GPIO 设置为资质审核异步的任何复选框/下拉菜单。
在 FSI 部分中选择的关联 GPIO 不会自动填充 GPIO 部分中的任何内容(例如、如果填充 LED 部分、则 GPIO 部分会自动填充)。
构建后、自动生成的 board.h/board.c 文件不会为 FSI GPIO 引脚设置任何限定条件。
由于我的新项目未对 FSI GPIO 设置任何限定条件、我的 PWM 抖动显著改善、降至16-20ns (处于70ns 范围内)
两个问题
如果我想以高达50MHz 的频率运行 FSI 时钟、那么将 FSI GPIO 引脚设置为 qual async 的重要性如何? 现在、我没有看到 CRC 或其他错误在25 MHz 频率下弹出、尽管我没有在夜间运行。
2.最好将 GPIO 鉴定设置函数调用包括在哪里? 我在其中包含了一个代码片段,我在其中测试了 GPIO 鉴定。Board_init()是 SysConfig 自动生成的函数。
// // Main // void main(void) { Device_init(); // // Initialize PIE and clear PIE registers. Disables CPU interrupts. // Interrupt_initModule(); // // Initialize the PIE vector table with pointers to the shell Interrupt // Service Routines (ISR). // Interrupt_initVectorTable(); SysCtl_disablePeripheral(SYSCTL_PERIPH_CLK_TBCLKSYNC); //GPIO_setQualificationMode(DEVICE_GPIO_PIN_FSI_RX0, GPIO_QUAL_ASYNC); //GPIO_setQualificationMode(DEVICE_GPIO_PIN_FSI_RXCLK, GPIO_QUAL_ASYNC); Board_init(); SysCtl_enablePeripheral(SYSCTL_PERIPH_CLK_TBCLKSYNC);