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.

[参考译文] TM4C123GH6PGE:在代码中定义但不在数据表中定义的 ADC 外设地址

Guru**** 2456980 points
Other Parts Discussed in Thread: TM4C123GH6PGE

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/642663/tm4c123gh6pge-adc-peripheral-address-defined-in-code-but-not-datasheet

器件型号:TM4C123GH6PGE
主题中讨论的其他器件: DK-TM4C123G

首先介绍一些基础知识:

IDE:CCS 7.3

操作系统:Windows 10

数据表:TivaTmTM4C123GH6PGE 微控制器-15033.2672

电路板:TM4C123GH6PGE

代码库:TivaWare_C_Series-2.1.4.178

 问题:我正在尝试一些非常简单的东西、但它还不起作用(尚未)。

下面是我的图表:

这是我使用的代码。 其来源为:

C:\ti\TivaWare_C_Series-2.1.4.178\examples\peripherals\adc\single_ended.c

 

我所做的唯一更改是设置 GPIO_PIN_6 (最初为 GPIO_PIN_3)。

 

在252行,使用 IP 参数“SYSCTL_PERIPH_ADC0”启用外设。

它在 C:\ti\TivaWare_C_Series-2.1.4.178\driverlib\sysctl.h 中定义为

#define SYSCTL_PERIPH_ADC0     0xf0003800 // ADC 0

问题1:但没有提到,我可以在数据表中找到0xf0003800 (甚至3800)。 我验证了 ADC0基址,但没有验证这个“外设”地址。 它在哪里?

 

问题2:第75行 SYSCTL_PERIPH_GPIOE 在地址0xf0000804处定义。

数据表中的相应值在哪里?

最后一点:

第699页的是寄存器18“GPIO 数字使能寄存器(GPIODEN),偏移量0x51C”。

它表示“默认情况下,除列出的信号外,所有 GPIO 信号均为”

以下是复位后配置为未驱动(三态)的状态。 其数字功能被禁用…”

请确认我是否需要设置此寄存器

 

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

    问题1:但没有提到,我可以在数据表中找到0xf0003800 (甚至3800)。 我验证了 ADC0基址,但没有验证这个“外设”地址。 它在哪里?

    值0xf0003800不是地址。 它是函数 SysCtlPeripheralEnable()中使用的值。 在这种情况 下、该函数向地址0x400FE638位0写入"1"以启用 ADC0。

    void
    SysCtlPeripheralEnable (uint32_t ui32Peripheral)
    {
    //
    //检查参数。
    //
    Assert (_SysCtlPeripheralValid (ui32Peripheral));
    
    //
    //启用此外设。
    //
    HWREGBITW (SYSCTL_RCGCBASE +((ui32Peripheral & 0x0000)>> 8)、
    ui32Peripheral & 0xff)= 1;
    }
    

    问题2:第75行 SYSCTL_PERIPH_GPIOE 在地址0xf0000804处定义。 数据表中的相应值在哪里?

    再说一次、这不是地址。

    第699页的是寄存器18“GPIO 数字使能寄存器(GPIODEN),偏移量0x51C”。 它表示:“默认情况下,除下面列出的信号外,所有 GPIO 信号都被配置为非驱动(三态)。 其数字功能被禁用…” 请确认我是否需要设置此寄存器

    要将引脚用作模拟输入、无需为该引脚设置 GPIODEN 位。

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

    [引用 user="Bob Crosby"]值0xf0003800不是地址。

    [引用 user="Bob Crosby"]同样,这不是一个地址。

    UINT32_t、用于再次发生任何情况。

    认真地说、这通过了一个简单的安全检查、没有增益、因为没有实施。

    Robert

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Robert
    感谢您的回复。
    很抱歉在深夜和提交第一个帖子后两次发布此帖子
    在提交后没有回复时、我很不耐烦、因此重复了这一帖子。


    当然、您的地址不是0xf0003800。 我需要更好地使用 RTFM (即源代码)和驱动程序库。

    现在、假设示例代码"single_ended.c"实际上已经过测试、可以在 Tiva DK-TM4C123G 上工作吗?

    我知道、为了验证是否使用了正确的端口(E)和 GPIO 6 (AIN21)引脚、必须进行一些细微的更改、所以您可以建议代码的其他方面可能会被忽略吗?

    到目前为止、ADC 代码主要显示为0、偶尔显示为1。

    谢谢

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

    我的回答只是简单地说、我认为 API 可以对所使用的类型以及对检测错误的能力的影响进行一些处理。 但是、您可能需要查看序列配置步骤并检查正在配置的通道。

    Robert