Other Parts Discussed in Thread: TDC1000, TDC1000-C2000EVM
主题中讨论的其他器件:TDC1000、
工具/软件:Code Composer Studio
您好!
我一直在与 TDC100-C2000EVM 合作进行一个项目、以确定容器内液体浓度何时发生变化。 在我的测试设置中、我有两个相互连接的超声波换能器。 当我打开 TDC1000-C2000 GUI 并启动图形时、我可以实时看到飞行时间(ToF)的变化。
我在该项目中的目标是将 C2000微控制器中的值写入 Arduino,以便通过 Arduino 的串行监视器功能读取 ToF 值。 我无法确定如何使 TDC1000和 C2000相互通信。 我购买了 XDS110调试探针并下载了 code composer studio 以尝试调试 C2000、从而使其正常工作。
有8个 GPIO 可直接连接。 每个都有一个可切换至的特定输出外设。 下面是我为此编写的代码:
//将 GPIO0启用为 EPWM1A - ePWM1输出 A (O) // GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0;//在 GPIO0 GpioDataRegs.GPASET.BIO0 = 1上启用上拉;//加载输出锁存 器 GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1;// GPIO0 = GPO0 = 1;// GPIO0 = GPIPB.GPIO0 = 0 = 1;/ GPIO0 = GPB.GPIO0 = 1 // //启用 GPIO1作为 EPWM1B - ePWM1输出 B (O) // GpioCtrlRegs.GPAPUD.bit.GPIO1 = 0;//在 GPIO1 GpioDataRegs.GPASET.BIO1 = 1上启用上拉;//加载输出锁存 器 GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;// GPIO1 = GPIPB=1 = GPIPM1/ GPIO1.GPIO1.BO1 = 1输出 // //启用 GPIO3作为 EPWM2B - ePWM2输出 B (O) // GpioCtrlRegs.GPAPUD.bit.GPIO3 = 0;//启用 GPIO3 GpioDataRegs.GPASET.BIO3上的上拉;//加载输出锁存 器 GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 0;// GPIO3 = 1 = GPIPB/ GPIO3 = 1;/ GPIO3 = GPIPB.GPIO2 = 1 // //启用 GPIO7作为 EPWM4B - ePWM4输出 B (O) // GpioCtrlRegs.GPAPUD.bit.GPIO7 = 0;//在 GPIO7 GpioDataRegs.GPASET.BIO7上启用上拉;//加载输出锁存 器 GpioCtrlRegs.GPAMUX1.bit.GPIO7 = 0;// GPIO7 = GPIPO7 = 1;//输出锁存器 GPIPM7.GPIO= GPB.GPIO7 = GPIPM7 = GPB.GPIO7 // // EGPIO30只有输入外设 // GpioCtrlRegs.GPAPUD.bit.GPIO30 = 0;//在 GPIO30上启用上拉 // GpioDataRegs.GPASET.bit.GPIO30 = 1;//加载输出锁存 // GIOoRegs.GPAMUX1 = 1/ GPIO30 = 1; // GPIO30 = 0 / GPIO30 = 1 / GPIO30 = GPIO30 / GPIO30 = GPIO30 = GPIO30 / GPIO30 = GPIO30 / GPIOP.GPIO30 = GPIO30 / GPIO30 // GpioCtrlRegs.GPAPUD.bit.GPIO31 = 0;//在 GPIO31 GpioDataRegs.GPASET.BIO31上启用上拉电阻;//加载输出锁存 器 GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 1;// GPIO31 = 1 ;// GPIO31 = GPO31 = 1;//将 GPIO31作为 GPIO31的输出 引脚/ GPIO31 = 1;/ GPIO31作为 GPIO31引脚(GPO31 = 1)/ GPIO31 - GPIO31 - GPIO31 - GPIO31 - GPIO31 - GPIO31 (作为 GPIO31 - GPIO31 - GPIO31 - GPIO31 - GPIO31 - GPIO31 - GP // GpioCtrlRegs.GPBPUD.bit.GPIO32 = 0;//启用 GPIO32 GpioDataRegs.GPBSET.GPIO32上的上拉电阻;//加载输出锁存 器 GpioCtrlRegs.GPBMUX1.bit.GPIO32 = 4;// GPIO32 = 1作为 GPIO32的启动/ GPIO33转换(作为 GPIO32)/ GPIO32 = ADO32位 GPO32 = ADCBOP = 1 (作为 GPIO32) // GpioCtrlRegs.GPBPUD.bit.GPIO33 = 0;//在 GPIO33 GpioDataRegs.GPBSET.BIO33上启用上拉电阻;//加载输出锁存 器 GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 4;// GPIO33 = 1;// GPIO33 = 1–GPIO33 = 1–GPIO33–GPIO33–GPIO33–GPIOC.BOP 转换
将这些 GPIO 设置为其适用的输出类型(ePWM、CANTX、ADC 转换启动)后、我不知道在 Arduino 上读取这些值时会输出什么值。 如果我断开传感器与 TX1的连接、该值不会改变。 如果我注释掉 GPIO 代码、我在 Arduino 上读取0。 我正在从板上读取一些内容,但不知道是什么。
在源代码下:"C:\Program Files (x86)\Texas Instruments\TDC1000_C2000\Firmware\TDC1000_C2000EVM_FW-Source-v1.42.zip"。
我找到了一个名为 main_level.c 的文件 下面是该代码的一个片段。
void TI_LMP91400_reg_init (void) { // 1MHz 测试单元(绿色) #if 0 TI_LMP91400_SPIWriteReg (TI_LMP91400_CONFIG0_REG、0x44);// 4个脉冲 TI_LMP91400_SPIWriteReg (TI_LMP91400_config1_REG、0x41);//-> 44至40 (1stoop) TI_LMP91400_SPIWriteReg (TI_LMP91400_CONFIG2_REG、0x04);// tx2为04、tx1为0 TI_LMP91400_SPIWriteReg (TI_LMP91400_CONFIG3_REG、0x0C);//启用消隐、320mv 阈值 TI_LMP91400_SPIWriteReg (TI_LMP91400_CONFIG4_REG、0x5F);// 5e (组)-> 1e (边沿模式) TI_LMP91400_SPIWriteReg (TI_LMP91400_TOF1_REG、0x40); TI_LMP91400_SPIWriteReg (TI_LMP91400_TOF0_REG、0x1E); TI_LMP91400_SPIWriteReg (TI_LMP91400_ERROR_FLAGS_REG、0x01); TI_LMP91400_SPIWriteReg (TI_LMP91400_TIMEOUT_REG、0x23); TI_LMP91400_SPIWriteReg (TI_LMP91400_Cock_RATE _REG、0x01); #endif }
我不确定 TI_LMP91400是什么、但这是我唯一看到 TDC1000中的 TOF0、TOF1和其他寄存器的时间。 我需要弄清楚如何使这些寄存器从 GPIO 输出。
如果有更好的方法来输出这些值、请告诉我。
谢谢、
Colin



