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.

[参考译文] 模拟读操作不起作用

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/611836/analog-read-is-not-working

器件型号:TM4C1294NCPDT

工具/软件:Code Composer Studio

我不熟悉 CCS、尝试按照数据表中的初始化和配置步骤进行操作、但我没有获得预期结果、我最终想使用中断、但我认为这会更容易。 

或者、如果有人可以向我指出使用 TM4C1294的在线示例、这会很好、但大多数不使用此 IC 或 CCS。

我们非常感谢您的任何帮助/指导!

Bill




/******** ADC 测试1 / #include "tm4c1294ncpdt.h" void Initialize_basic (void){ SYSCTL_RCGCGPIO_R = 0x1030U;//启用端口 GPIO-E、GPIO-F 和 GPIO-N } void Initialize_digital (void){ /***** 设置端口 F -数字输出***** / //步骤1 -启用端口 F GPIO_PORTF_DIR_R = 0x0FU; //步骤2 -设置端口 F、引脚0、1、2和3作为输出 GPIO_PORTF_AFSEL_R = 0x00U; //步骤3 -是否使用了备用引脚? -现在不是 GPIO_PORTF_PC_R = 0x00U; //步骤4 -扩展驱动模式-数字 I/O 的当前驱动 GPIO_PORTF_DR2R_= 0x0EU; //步骤5-7 -输出引脚将以2mA 的电流驱动 GPIO_PORTF_CR_R = 0xFFU; //步骤8 -如果为0xFF、GPIOPUR、GPIOPDR 和 GPIOODR 寄存器可以被写入 //GPIO_PORTF_PUR_= //步骤8 - GPIO 上拉电阻器 //GPIO_PORTF_PDR_R = //步骤8 - GPIO 下拉电阻器 //GPIO_PORTF_ODR_R = //步骤8 - GPIO 开漏 GPIO_PORTF_DEN_R = 0xFFU; //步骤9 -启用端口 F 上的数字功能 //GPIO_PORTF_IEV_R = //步骤10 - GPIO 中断事件 //GPIO_PORTF_IBE_R = //步骤10 - GPIO 中断双边沿 //GPIO_PORTF_IEV_R = //步骤10 - GPIO 中断事件上升沿或下降沿事件 //GPIO_PORTF_IM_R = //步骤10 - GPIO 中断屏蔽寄存器 /***** 设置端口 N -数字输出***** / GPIO_PORTN_DIR_R = 0x03U; //步骤2 -将端口 N 设置为输出 GPIO_PORTN_AFSEL_R = 0x00U; //步骤3 -是否使用了备用引脚? -现在不是 GPIO_PORTN_PC_R = 0x00U; //步骤4 -扩展驱动模式-数字 I/O 的当前驱动 GPIO_PORTN_DR2R_= 0x04U; //步骤5-7 -输出引脚将以2mA 的电流驱动 GPIO_PORTN_CR_R = 0xFFU; //步骤8 -如果为0xFF、GPIOPUR、GPIOPDR 和 GPIOODR 寄存器可以被写入 GPIO_PORTN_DEN_R = 0x03U; //步骤9 -启用端口 N 上的数字功能}/******* ADC 模式********* / void Initialize_ADC1 (void){ /******* 设置 ADC -模块初始化******* / SYSCTL_RCGCADC_R = 0x02; //步骤1 -启用 ADC 1. SYSCTL_RCGCGPIO_R = 0x1030U;//步骤2 -启用适当的 GPIO 模块 GPIO_Porte _DIR_R = 0x00U; GPIO_Porte _AFSEL_R = 0x02; //步骤3 -使用端口 E 引脚1作为 ADC 输入 GPIO_Porte _DEN_R =(0x00); //步骤4 -清除端口 E 所有引脚上用于模拟的数字使能位 GPIO_Porte AMSEL_R =(0x0F);//步骤5 -禁用 ADC 输入引脚的模拟隔离 //步骤6 -如果需要,设置优先级,而不需要 /******* 设置 ADC -序列发生器配置******* / ADC1_ACTSS_R &=~(1<<3); //步骤1 -禁用 ADC1采样序列器3进行编程 ADC1_EMUX_R = 0x0F; //第2步- ADC1采样序列发生器3的触发事件被设置为始终 //步骤3 -如果将 PWM 用作触发器件则置1 ADC1_SSEMUX3_R = 0x00; //步骤4 -使用 AIN[15:0] ADC1_SSMUX3_R = 0x02; //步骤4 -将 MUX3设置为与 PE1一起使用 ADC1_SSCTL3_R = 0x02; //步骤5 - //步骤6 -不使用中断 ADC1_ACTSS_R =(1<<3);//步骤7 -启用采样序列发生器3 } int ADC_number = 0; int main () { initialize_basic(); initialize_digited(); //设置数字运算的函数 Initialize_ADC1 (); GPIO_PORTN_DATA_R = 0x03U; while (1){ ADC_Number = ADC1_SSFIFO3_R; 如果(ADC_Number > 2000) GPIO_PORTN_DATA_R = 0x03U; 其他 GPIO_PORTN_DATA_R = 0x00U; } 返回0; }

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

    我不熟悉 CCS、尝试按照数据表中的初始化和配置步骤进行操作、但我没有获得预期结果、我最终想使用中断、但我认为这会更容易。  

    或者、如果有人可以向我指出使用 TM4C1294的在线示例、这会很好、但大多数不使用此 IC 或 CCS。

    我们非常感谢您的任何帮助/指导!

    Bill
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Bill、
    TivaWare 库提供的所有示例都使用提供的驱动程序库、该驱动程序库使启动/配置、尤其是调试易于执行。 请参阅下面的 ADC 示例 \examples\peripheral\adc。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    **喜欢! **
    API 使新用户的生活变得更加简单。 (虽然(也许仍然)在 MCU 手册中没有提到任何 API)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    另一个类似的地方。 另外、如果描述不能按预期工作、也会很有用

    Robert