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.

[参考译文] EK-TM4C1294XL:模数转换中断未触发

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/567405/ek-tm4c1294xl-analog-to-digital-conversion-interrupt-not-triggered

器件型号:EK-TM4C1294XL

您好!


我使用的是 TM4C1294XL 电路板、我尝试使用中断来检索 ADC 的结果、而不是等待。 我使用 CCS 和 driverlib 代码来配置电路板。 我的第一个代码执行了手动触发、以转换并在 PuTTy 上显示内部温度。 因此 UART0和 ADC 配置有效。 我现在尝试使用始终采样和中断来检索结果、而不是等待。 但无法使中断正常工作。 请帮帮我。 这是 startups_ccs 的代码 a main.c 和。 我不会在 UART 代码运行时发布它。

main.c

void ADC0seq3_Handler (void){
uint32_t ADC0Value[1];
volatile unsigned long TempValue;
ADCSequenceDataGet (ADC0_BASE、3、ADC0Value);
TempValue =(1475 -(2475 * ADC0Data[0]))/4096)/10;
UARTf ("UARTprintf"("UCTRE"
);ADCprintf ("3D

= UCTREASE); 3);
}

int main (void){

//Init 使用 ADC0和序列3。
ADCSequenceDisable (ADC0_BASE、3);
IntMasterDisable ();
IntDisable (INT_ADC0SS3_TM4C129);
ADCIntDisable (ADC0_BASE、 3);

SysCtlPeripheralEnable (SYSCTL_Periph_ADC0);
while (!SysCtlPeripheralReady (SYSCTL_Periph_ADC0)){
//等待模块就绪。
}

ADCClockConfigSet (ADC0_BASE、ADC_CLOCK_SRC_PIOSC | ADC_CLOCK_RATE_FULL、1);
ADCSequenceConfigure (ADC0_BASE、3、 ADC_TRIGGER_AUSE, 0);
ADCSequenceStepConfigure (ADC0_BASE,3,0, ADC_CTL_TS | ADC_CTL_IE | ADC_CTL_END);

IntEnable (INT_ADC0SS3_TM4C129);
ADCIntClear (ADC0_BASE、3);
ADCIntEnable (ADC0_BASE、 3);
IntMasterEnable();
ADCSequenceEnable (ADC0_BASE,3);//启用序列发生器 ADC0 seq3。

while (1){
//此处应发生中断
}

返回0;
} 

这是我的 startup_ccs 文件

extern void ADC0seq3_Handler (void);

#pragma DATA_SECTION (g_pfnVectors、".intvecs")
void (* const g_pfnVectors [])(void)=
{
(void (*)(void)((uint32_t)&_stack_top)、
//初始堆栈指针
ResetISR、 //重置处理程序
NmiSR、 // NMI 处理程序
FaultISR、 //硬故障处理程序
IntDefaultHandler、 // MPU 故障处理程序
IntDefaultHandler、 //总线故障处理程序
IntDefaultHandler、 //用法故障处理程序
0、 //保留
0、 //保留
0、 //保留
0、 //保留
IntDefaultHandler、 // SVCall 处理程序
IntDefaultHandler、 //调试监视器处理程序
0、 //保留
IntDefaultHandler、 // PendSV 处理程序
IntDefaultHandler、 // SysTick 处理程序
IntDefaultHandler、 // GPIO 端口 A
IntDefaultHandler、 // GPIO 端口 B
IntDefaultHandler、 // GPIO 端口 C
IntDefaultHandler、 // GPIO 端口 D
IntDefaultHandler、 // GPIO 端口 E
IntDefaultHandler、 // UART0 Rx 和 Tx
IntDefaultHandler、 // UART1 Rx 和 Tx
IntDefaultHandler、 // SSI0 Rx 和 Tx
IntDefaultHandler、 // I2C0主机和从机
IntDefaultHandler、 // PWM 故障
IntDefaultHandler、 // PWM 发生器0
IntDefaultHandler、 // PWM 发生器1
IntDefaultHandler、 // PWM 发生器2.
IntDefaultHandler、 //正交编码器0
IntDefaultHandler, // ADC 序列0
IntDefaultHandler、 // ADC 序列1
IntDefaultHandler、 // ADC 序列2
ADC0seq3_Handler、 // ADC 序列3.
IntDefaultHandler、 //看门狗计时器
IntDefaultHandler、 // Timer 0子计时器 A
IntDefaultHandler、 // Timer 0子计时器 B
IntDefaultHandler、 //计时器1子计时器 A
IntDefaultHandler、 //计时器1子计时器 B
IntDefaultHandler、 //计时器2子计时器 A
IntDefaultHandler、 //计时器2子计时器 B
IntDefaultHandler、 //模拟比较器0
IntDefaultHandler、 //模拟比较器1
IntDefaultHandler、 //模拟比较器2.
IntDefaultHandler、 //系统控制(PLL、OSC、BO)
IntDefaultHandler、 //闪存控制
IntDefaultHandler、 // GPIO 端口 F
IntDefaultHandler、 // GPIO 端口 G
IntDefaultHandler、 // GPIO 端口 H
IntDefaultHandler、 // UART2 Rx 和 Tx
IntDefaultHandler、 // SSI1 Rx 和 Tx
IntDefaultHandler、 //计时器3子计时器 A
IntDefaultHandler、 //计时器3子计时器 B
IntDefaultHandler、 // I2C1主设备和从设备
IntDefaultHandler、 // CAN0
IntDefaultHandler、 // CAN1
IntDefaultHandler、 //以太网
IntDefaultHandler、 //休眠
IntDefaultHandler、 // USB0
IntDefaultHandler、 // PWM 发生器3.
IntDefaultHandler、 // uDMA 软件传输
IntDefaultHandler、 // uDMA 错误
IntDefaultHandler、 // ADC1序列0
IntDefaultHandler、 // ADC1序列1
IntDefaultHandler、 // ADC1序列2.
IntDefaultHandler、 // ADC1序列3.
IntDefaultHandler、 //外部总线接口0
IntDefaultHandler、 // GPIO 端口 J
IntDefaultHandler、 // GPIO 端口 K
IntDefaultHandler、 // GPIO 端口 L
IntDefaultHandler、 // SSI2 Rx 和 Tx
IntDefaultHandler、 // SSI3 Rx 和 Tx
IntDefaultHandler、 // UART3 Rx 和 Tx
IntDefaultHandler、 // UART4 Rx 和 Tx
IntDefaultHandler、 // UART5 Rx 和 Tx
IntDefaultHandler、 // UART6 Rx 和 Tx
IntDefaultHandler、 // UART7 Rx 和 Tx
IntDefaultHandler、 // I2C2主设备和从设备
IntDefaultHandler、 // I2C3主设备和从设备
IntDefaultHandler、 //计时器4子计时器 A
IntDefaultHandler、 //计时器4子计时器 B
IntDefaultHandler、 //计时器5子计时器 A
IntDefaultHandler、 //计时器5子计时器 B
IntDefaultHandler、 // FPU
0、 //保留
0、 //保留
IntDefaultHandler、 // I2C4主设备和从设备
IntDefaultHandler、 // I2C5主设备和从设备
IntDefaultHandler、 // GPIO 端口 M
IntDefaultHandler、 // GPIO 端口 N
0、 //保留
IntDefaultHandler、 //改动
IntDefaultHandler、 // GPIO 端口 P (摘要或 P0)
IntDefaultHandler、 // GPIO 端口 P1
IntDefaultHandler、 // GPIO 端口 P2
IntDefaultHandler、 // GPIO 端口 P3
IntDefaultHandler、 // GPIO 端口 P4
IntDefaultHandler、 // GPIO 端口 P5
IntDefaultHandler、 // GPIO 端口 P6
IntDefaultHandler、 // GPIO 端口 P7
IntDefaultHandler、 // GPIO 端口 Q (摘要或 Q0)
IntDefaultHandler、 // GPIO 端口 Q1
IntDefaultHandler、 // GPIO 端口 Q2
IntDefaultHandler、 // GPIO 端口 Q3
IntDefaultHandler、 // GPIO 端口 Q4
IntDefaultHandler、 // GPIO 端口 Q5
IntDefaultHandler、 // GPIO 端口 Q6
IntDefaultHandler、 // GPIO 端口 Q7
IntDefaultHandler、 // GPIO 端口 R
IntDefaultHandler、 // GPIO 端口 S
IntDefaultHandler、 // SHA/MD5 0
IntDefaultHandler、 // AES 0
IntDefaultHandler、 // DES3DES 0
IntDefaultHandler、 // LCD 控制器0
IntDefaultHandler、 //计时器6子计时器 A
IntDefaultHandler、 //计时器6子计时器 B
IntDefaultHandler、 //计时器7子计时器 A
IntDefaultHandler、 // Timer 7子计时器 B
IntDefaultHandler、 // I2C6主从设备
IntDefaultHandler、 // I2C7主设备和从设备
IntDefaultHandler、 // HIM 扫描矩阵键盘0
IntDefaultHandler、 //单线0
IntDefaultHandler、 // HIM PS/2 0
IntDefaultHandler、 // HIM LED 序列发生器0
IntDefaultHandler、 // HIM 消费者 IR 0
IntDefaultHandler、 // I2C8主设备和从设备
IntDefaultHandler、 // I2C9主设备和从设备
IntDefaultHandler // GPIO 端口 T
};

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

    首先、中断在代码中起作用吗? 即、如果在中断处理程序上放置一个断点、它是否起作用?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好


    感谢您的回复。


    它实际上起作用。 它与中断本身无关、而是与 ADC 配置中的反相相关

    //Init the ADC0 and sequence 3 is used.

        ADCSequenceDisable(ADC0_BASE, 3);
    必须在向组件提供时钟后置1、否则 ADC 和中断将不起作用
    很抱歉
    kr
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Nicolas

    当从启动状态使用器件时、不需要上述行、因为序列发生器已被禁用。

    现在、关于显示问题、我假设波特率为115200。 现在您正在传输~50个字符、总线上的每个字符为10位(数据为8位、起始为1位、停止为1位)。 发送一个温度值的总时间为50*10/115200,即~4.3ms。 转换率为1us。 因此、您最终得到的转换比您可以输出的转换快得多。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好

    感谢您关注我的代码。 实际上、我仅使用显示屏来验证 ADC 是否运行良好。 最终目标是对模拟信号进行采样、然后使用 DSP 滤除噪声并进行其他后处理、然后通过以太网端口发送该数字化信号。 我刚才选择的可能是 c5000series。

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

    我执行相同类型的操作(尽管在音频 TI 设计中不是 CMSIS DSP 滤波器)

    www.ti.com/.../TIDM-TM4C129POEAUDIO