器件型号:XTCIEVMK2LX
工具/软件:TI-RTOS
各位专家、您好。
我仍在努力使 ADC 板(DEV-ADC34J22)与 XTCIEVMK2LX 配合使用。 (请参阅 此。)
根据 ADC 板的用户指南、它有两个可通过 SPI 接口配置的芯 片:ADC34J22和 LMK04828B。
该板通过 FMC1连接到 XTCIEVMK2LX、但不直接通过适配器板(FMC 到 HSMC)连接、因为 ADC 板仅具有 HSMC 连接器。
根据数据表、XTCIEVMK2LX 上似乎有三个 SPI 接口、SPI1似乎是连接到 FMC 的接口。
我不知道如何选择要在 ADC 板上配置的芯片、但无论如何、我决定使用 C 语言的 SPI 通信通过 FMC 将默认数据(在用户指南中提供)发送到板
我找到了 SPI 的驱动程序库、并通过运行将一些数据写入 NOR 闪存的测试应用程序来确认它运行良好。 参考示例代码、我编写了自己的代码、如下所示(省略了一些代码):
void Board_initSPI (void) { board_initCfg boardCfg; SPI_V0_HWAttrs SPI_cfg; /*获取默认的 SPI 初始化配置*/ SPI_socGetInitCfg (SPI_PORT、&SPI_cfg);// SPI_PORT = 1. /*如有必要,修改默认 SPI 配置*/ spi_cfg.intNum = 10;//将其设置为避免'Hwi already defined'错误。 /*设置默认的 SPI 初始化配置*/ SPI_socSetInitCfg (SPI_PORT、&SPI_cfg); boardCfg = Board_init_PINMUX_CONFIG | Board_init_module_clock | Board_init_uart_stdio; board_init (boardCfg); } void send_config (UArg0、UArgarg1) { SPI_Handle spiHandle; SPI_Params spiParams; SPI_Transaction spiTransactionAdc; SPI_Transaction spiTransactionLmk; SPI_Params_init (&spiParams); spiParams.transferTimeout = 10; spiHandle = SPI_open (SPI_PORT、&spiParams); if (!spiHandle) { System_printf ("SPI_open failed.\n"); } 否则 { System_printf ("SPI_open SUCCES.n"); } SpiTranstxAddc.count =默认值( 1nF) ;SpiTransactionData = 默认值(1nF);SpiTransactionTransactionf = nF (1nF);SpiTransactionTransactionf =默认值(1nF = nF); if (!spi_transfer (spiHandle、&spiTransactionLmk) ){ System_printf ("发送 LMK 默认数据失败。\n"); } spi_close (spiHandle); BIOS_exit (0); } /* === main ==== */ int main (void) { System_atexit (AtExit); System_printf ("正在进入 Board_initSPI ()...\n"); Board_initSPI(); System_printf ("正在退出 Board_initSPI ()...\n"); system_printf ("正在输入 SPI_init ()...\n"); spi_init(); system_printf ("正在退出 SPI_init ()...\n"); System_printf ("正在进入 BIOS...\n"); BIOS_start(); return (0); } void AtExit (int stat) { System_printf ("正在退出 BIOS..."); return; }
cfg 文件如下所示:
var 设置= xdc.useModule('ti.board.Settings'); var BIOS = xdc.useModule('ti.sysbios.BIOS'); var ti_drv_spi_Settings = xdc.useModule('ti.drv.spi.Settings'); var ti_drv_UART_Settings = xdc.useModule('ti.drv.uart.Settings'); var ti_osal_Settings = xdc.useModule('ti.osal.Settings'); var ti_CSL_Settings = xdc.useModule('ti.csl.Settings'); var Task = xdc.useModule('ti.sysbios.knl.Task'); var System = xdc.useModule('xdc.runtime.System'); var SysStd = xdc.useModule('xdc.runtime.SysStd'); var HeapMem = xdc.useModule('ti.sysbios.heaps.HeapMem'); var 内存= xdc.useModule('xdc.runtime.Memory'); var HeapBuf = xdc.useModule('ti.sysbios.heaps.HeapBuf'); System.SupportProxy = SysStd; var CpIntc = xdc.useModule('ti.sysbios.family.c66.tci66xx.CpIntc'); Settings.boardName ="evmK2L"; ti_drv_SPI_Settings.socType ="K2L"; ti_drv_UART_Settings.socType ="K2L"; ti_osal_Settings.osType ="tirtos"; TI_osal_Settings.socType ="K2L"; ti_csl_Settings.deviceType ="K2L"; var task0Params = new Task.Params (); task0Params.instance.name ="task0"; task0Params.STACKSIZE = 4096; Program.global.task0 = Task.create ("&send_config"、task0Params); Task.numPriorities = 4; var heapMem0Params = new HeapMem.Params (); heapMem0Params.instance.name ="heapMem0"; heapMem0Params.size = 204800; Program.global.heapMem0 = HeapMem.create (heapMem0Params); Memory.defaultHeapInstance = Program.global.heapMem0;
构建和启动代码没有问题、但当我单击 CCS 上的"Resume"按钮时、代码将挂起。 调试探针的状态显示"Running"。 输出如下:
正在输入 Board_initSPI()...
正在退出 Board_initSPI()……
正在输入 SPI_init()……
正在退出 SPI_init()……
正在进入 BIOS...
SPI_open 成功。
当尝试 SPI_TRANSF()时,程序似乎挂起。
实际上、我不确定这是否是在 ADC 板上配置芯片的正确方法。 如果我的行为完全错误、请告诉我正确的方法。 最终目标是以编程方式从 ADC 板获取数据。 我仍然不确定是否可以使用硬件配置进行配置、但无论如何、我认为必须先配置 ADC 板、然后才能使用射频 SDK 工具进行访问。
非常感谢!
Huioon