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.

[参考译文] RTOS/TM4C1294NCPDT:TM4C1294KCPDT

Guru**** 2560390 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/805663/rtos-tm4c1294ncpdt-tm4c1294kcpdt

器件型号:TM4C1294NCPDT

工具/软件:TI-RTOS

您好!

DMA 传输是否可以在内部 EEPROM 中进行?

此致

Nikhil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    可以使用 UDMA 从 EEPROM 块读取数据。 使用 UDMA 写入 EEPROM 并不实际、因为在"工作"位清零之前、后续写入必须延迟(通过轮询或中断)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Bob:
    您能澄清几点吗?

    它是否会为每个4字节传输生成一个中断?
    2.在回调方法中、是否可以将其配置为在完成96字节大小的完整数据包的传输后生成单个中断?
    3.是否有适用于基于 DMA 的 EEPROM 的示例代码?

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

    [引用 user="Nikhil KV1]1. 它是否会为每个4字节传输生成中断?

    "IT"是指使用 DMA 进行读取? 您设置传输大小、并在传输完成时获得中断。 您应该使用 EERDWRINC 寄存器中的32位读取来执行 DMA 传输、并且不能跨过块边界。 这样、您就可以读取16个32位字或64字节、然后生成中断。 但读取速度如此之快、以至于我不认为任何人都不想使用 DMA。 通常,它们只调用 EEPROMREAD()。

    [引用 user="Nikhil KV1">2. 在回调方法中、是否可以将其配置为在完成96字节大小的完整数据包的传输后生成单个中断?[/QUERP]

    当使用中断写入 EEPROM 时、您会在写入每个32位字后获得一个中断。 通常、您会编写一个函数、该函数会传递地址、计数、指向数据缓冲区的指针以及指向回调函数的指针。 此例程将保留地址和计数的静态副本(如果数据指针未指向静态缓冲区、则保留数据缓冲区的静态副本)。 它将通过启用闪存中断并调用 EEPROMProgramNonBlocking ()来启动此过程。 闪存中断例程将能够访问静态地址和计数、并在 对所有数据进行编程之前对 EEPROMProgramNonBlocking ()进行后续调用、然后调用回调函数。

    [引用用户="Nikhil KV1]3. 是否有适用于基于 DMA 的 EEPROM 的任何示例代码?[/QUERP]

    不可以、虽然可以使用 DMA 进行读取、但这并不实用。 读取不是时间问题、而是写入问题。

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

    在使用 DMA 的同时、有什么好处呢?

    实际上、我有一些关键任务、我希望一次将几乎200字节的数据写入 EEPROM。
    但是、使用中断方法、我的任务将在每4个字节写入后被中断抢占。
    此外、我丢失了额外的上下文切换时间。
    解决此问题的最佳方法是什么?..

    此致
    Nikhil
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不支持使用 DMA 进行写入、因为在对每4个字节完成编程后、您不会收到 DMA 请求。 最好的选择是使用中断。 上下文切换很高效、并且闪存中断例程应该非常短。