器件型号: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