This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/TM4C1294NCPDT:将数据写入 USB 闪存驱动器

Guru**** 2482225 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/721388/ccs-tm4c1294ncpdt-writing-data-to-usb-flash-drive

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

我对 Tivaware C 系列 LaunchPad 进行编程相当陌生、因此我想知道是否有人可以查看我编写的一些代码 、以便将一些数据写入连接到 launchpad 的外部闪存驱动器的.csv 文件中。 编译没有显示错误、但当我调试程序时、它会发生错误。 如果你能帮我解决这个问题,那对我来说会很有用,谢谢。

//
//为100Hz 中断配置 SysTick。
//
ROM_SysTickPeriodSet (ui32SysClock/ticks_per_sond);
ROM_SysTickEnable();
ROM_SysTickIntEnable();

//
//启用 uDMA 控制器并设置控制表基址。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UDMA);
ROM_uDMAEnable();
ROM_uDMAControlBaseSet (g_sDMAControlTable);

//
//初始化 USB 堆栈模式并传入模式回调。
//
USBStackModeSet (0、eUSBModeHost、0);

//
//注册主机类驱动程序。
//
USBHCDRegisterDrivers (0、g_ppHostClassDrivers、g_ui32NumHostClassDrivers);

//
//打开海量存储类驱动程序的实例。
//
G_psMSCInstance = USBHMSCDriveOpen (0、MSCCallback);

//
//初始化电源配置。 这将设置电源使能信号
//为高电平有效且不使能电源故障。
//
USBHCDPowerConfigInit (0、USBHCD_VBUS_AUTO_HIGH | USBHCD_VBUS_FILTER);

//
//将 CPU 时钟和 PLL 频率告知 USB 库。 这是一个
// TM4C129器件的新要求。
//
SysCtlVCOGet (SYSCTL_XTAL_25MHz、\ui32PLLRate);
USBHCDFeatureSet (0、USBLIB_Feature_CPUCLK、&ui32SysClock);
USBHCDFeatureSet (0、USBLIB_Feature_USBPLL、&ui32PLLRate);

//
//初始化 USB 控制器以进行主机操作。
//
USBHCDInit (0、g_pHCPool、HCD_MEMORY_SIZE);

//
//初始化文件系统。
//
f_mount (0、&g_sFatFs);
f_open (&g_sFileObject、"F:/data.csv、fa_read | fa_write | fa_open_always);
dword size =(&g_sFileObject)->fsize;

fresult = f_lseek (&g_sFileObject、size);
F_WRITE (&g_sFileObject、"1000.00,1001.00,1002.00,1003.00,1004.00,1005.00,1006.00,150,151,152,1,10000,10001,10002,360.1234\n"、sizeof ("1000.00,1001.00,1002.00,1003.00,1004.100,1001,1001,1001,1001.1234";)
f_sync (&g_sFileObject);

f_close (&g_sFileObject); 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Kevin:

    根据 USB 库的 Tivaware 版本、对设置 PLL 的调用可能会导致问题。 但是、您应该使用 CCS 调试单步进入代码以显示其故障位置。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    此帖子 Anup 发布了他的代码以写入 USB 闪存挂起驱动器。 希望此帖子和示例对您有所帮助。

    e2e.ti.com/.../1384445
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    正是通过调用设置 PLL 导致了问题、是否有任何解决方法?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    实际上、导致故障错误的原因是 f_write、我的操作是否正确?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    新的 PLL 设置导致 PLL 在具有旧版 Tivaware USB 库2.1.1.71和2.1.0.1273的情况下停止对 USB0的工作。 调用 SysCtlVCOGE()甚至不可用。

    想知道 PLL 频率是否会对串行总线传输速度产生某种影响。 (f_write)是否在缓冲区或数组中指定了 Xfer 或数据包大小?