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.

[参考译文] TMS570LS1114:通过读取 ADC 值中止数据

Guru**** 2394295 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/894371/tms570ls1114-abort-data-by-reading-adc-values

器件型号:TMS570LS1114

大家好、

 我正在通过读取 ADC 值来解决数据中止问题。 实际上、在我的项目中、我每100us 配置一次由 HET 触发的 ADC。

  中断正常发生,但通过在函数中的 UINT32   index =(ADC =adcREG1)?行中读取 ADC 值来实现。 0U:1U;

uint32 adcGetData (adcBASE-t * ADC、uint32组、adcData_t * data)

uint32 i;
uint32 buf;
uint32模式;
uint32索引=(ADC = adcREG1)? 0U:1U;

uint32计数;

adcData_t * ptr =数据;

我获得数据中止。 我猜堆会有问题,因为当我注释掉这一行时, adcData_t *ptr = data 又出现了同样的问题;

这是我的链接器脚本  

/*链接器设置*/
--stack_size=0x0800
--heap_size=0x0100
--retain="*(.intvecs)"

/*------------------ *
/*内存映射*/
存储器{
引导程序(X):origin=0x00000000 length=0x00000020
FLASH0 (RX):origin=0x00000020 length=0x000FFFE0
堆栈(RW):origin=0x08000000 length=0x00001300
RAM (RW):origin=0x08001300 length=0x0001ED00

/*------------------ *
/*段配置*/
剖面{
.intvecs:{}>向量
.text:{}> FLASH0
.const:{}>FLASH0
.cinit:{}> FLASH0
.pinit:{}> FLASH0
.bss:{}> RAM
.data :{}> RAM
堆:{}> RAM
.sysmem:{}>RAM

在我的项目中、我使用的是 FreeRTOS、串行接口工作正常。 配置了堆栈4096字节的 ADC 的任务。

你有什么想法吗? 非常感谢您的参与。

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

    其他东西:我调用函数  

    uint32 adcGetData (adcBASE-t * ADC、uint32组、adcData_t * data)

    uint32 i;
    uint32 buf;
    uint32模式;
    uint32索引=(ADC = adcREG1)? 0U:1U;

    uint32计数;

    adcData_t * ptr =数据;

    在 notification.c 中、这意味着在中断例程中、当我将此部分移到任务(我使用 FreeRTOS)时、一切都正常。 这意味着:我可以执行  uint32索引=(ADC =adcREG1)? 0U:1U;或  adcData_t *ptr = data;没有任何问题。

    正如我之前说过的、它可能与堆相关、但我不知道为什么。

    谢谢。  

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

    您好!

    可用堆空间的总量由  在 FreeRTOSConfig.h.中定义的 configTOTAL_HEAP_SIZE 设置。xPortGetFreeHeapSize() API 函数返回未分配的堆空间总量(允许优化 CONFIGTOTAL_HAPSIZE 设置)。

    我不知道 FreeRTOS 如何为 任务、消息队列、信标、互斥量等分配内存  您可以比较 ISR 被移动到任务之前和之后使用的堆空间。

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

    您好 QJ、

    我解决了这个问题。 主要问题是启动过程 和使用链接器脚本进行设置。

    我从 FreeRTOS 获取了演示项目、很遗憾在启动过程中缺少自检 + BIST、并且未为 RTOS 正确定义链接器脚本。 嗯、从 HAL Cogen +手动修改生成项目后、现在我可以看到 HET 触发的 ADC。。。