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.

[参考译文] TM4C129XNCZAD:上拉

Guru**** 2608865 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/754699/tm4c129xnczad-pullups

器件型号:TM4C129XNCZAD

我使用示波器 PB2和 PB3引脚进行测量

我没有看到任何高电压、就好像上拉电阻器在这些引脚上不起作用一样。

也许我需要在开发板上使用跳线或执行一些操作?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否在代码中启用了内部上拉电阻器? 默认情况下不启用它们。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    并且我在数据总线上配置了开漏。
    在这行代码之后、我看不到高电压

    GPIOPadConfigSet (GPIO_PORTB_BASE、GPIO_PIN_2、GPIO_Strength _12mA、GPIO_PIN_TYPE_STD);
    GPIOPadConfigSet (GPIO_PORTB_BASE、GPIO_PIN_3、GPIO_Strength _12mA、GPIO_PIN_TYPE_OD);
    GPIOPadConfigSet (GPIO_PORTG_base、GPIO_PIN_0、GPIO_Strength _12mA、GPIO_PIN_TYPE_STD);
    GPIOPadConfigSet (GPIO_PORTG_base、GPIO_PIN_1、GPIO_Strength _12mA、GPIO_PIN_TYPE_OD);



    这是我的代码:


    #include
    #include
    #include
    #include
    #include "driverlib/rom.h"
    #include "driverlib/rom_map.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/gpio.h"
    #include "driverlib/interrupt.h"
    #include "driverlib/i2c.h"
    #include "inc/hw_ints.h"
    #include "inc/hw_memmap.h"
    #include "inc/hw_NVIC.h"
    #include "inc/hw_types.h"
    #include "driverlib/timer.h"
    #include "driverlib/uart.h"
    #include "driverlib/pin_map.h"
    //#include "inc/tm4c129xncszad.h"


    //原型函数
    空 I2C0Handler (空);
    void I2C1Handler (void);


    //主函数
    int main()

    volatile uint32_t SYSCLK=0;
    volatile uint32_t recvivied_data=0;
    volatile char ch;
    //设置时钟
    SYSCLK=SysCtlClockFreqSet (SYSCTL_OSC_INT|SYSCTL_USE_PLL|SYSCTL_CFG_VCO_320、16000000);

    //启用 i2c 外设
    SysCtlPeripheralDisable (SYSCTL_Periph_I2C0);// clk PB2,data PB3
    SysCtlPeripheralReset (SYSCTL_Periph_I2C0);// clk PG0,data PG1
    SysCtlPeripheralEnable (SYSCTL_Periph_I2C0);
    while (!SysCtlPeripheralReady (SYSCTL_Periph_I2C0));


    SysCtlPeripheralEnable (SYSCTL_Periph_I2C1);
    while (!SysCtlPeripheralReady (SYSCTL_Periph_I2C1));

    //启用 I2C 的 GPIO 端口
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOG);
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);

    //为 i2c0配置引脚复用
    GPIOPinConfigure (GPIO_PB2_I2C0SCL);
    GPIOPinConfigure (GPIO_PB3_I2C0SDA);

    //为 i2c1配置引脚复用
    GPIOPinConfigure (GPIO_PG0_I2C1SCL);
    GPIOPinConfigure (GPIO_PG1_I2C1SDA);

    //为此引脚选择 i2c 函数。
    //还配置 i2c 的引脚
    //将它们设置为开漏
    //
    //
    GPIOPinTypeI2C (GPIO_PORTB_BASE、GPIO_PIN_2);
    GPIOPinTypeI2CSCL (GPIO_PORTB_BASE、GPIO_PIN_3);
    GPIOPinTypeI2C (GPIO_PORTG_base、GPIO_PIN_1);
    GPIOPinTypeI2CSCL (GPIO_PORTG_BASE、GPIO_PIN_0);
    GPIOPadConfigSet (GPIO_PORTB_BASE、GPIO_PIN_2、GPIO_Strength _12mA、GPIO_PIN_TYPE_STD);
    GPIOPadConfigSet (GPIO_PORTB_BASE、GPIO_PIN_3、GPIO_Strength _12mA、GPIO_PIN_TYPE_OD);
    GPIOPadConfigSet (GPIO_PORTG_base、GPIO_PIN_0、GPIO_Strength _12mA、GPIO_PIN_TYPE_STD);
    GPIOPadConfigSet (GPIO_PORTG_base、GPIO_PIN_1、GPIO_Strength _12mA、GPIO_PIN_TYPE_OD);

    //设置 i2c 时钟
    I2CMasterInitExpClk (I2C0_BASE、SysCtlClockGet ()、false);

    //指定要从主器件发送的从器件地址

    I2CMasterSlaveAddrSet (I2C0_BASE、0x3B、false);

    I2CSlaveEnable (I2C1_base);
    I2CSlaveInit (I2C1_base、0x3B);



    I2CMasterDataPut (I2C0_BASE、'q');

    I2CMasterControl (I2C0_BASE、I2C_MASTER_CMD_SINGLE_SEND);




    while (I2CMasterBusy (I2C0_BASE))




    recvived_data=I2CSlaveDataGet (I2C1_base);
    ch=(char) recived_data;
    返回0;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当您将引脚配置为 SCL 和 SDA 时、该备用功能会覆盖 PAD 配置。 它强制两个引脚开漏、但您必须提供外部上拉电阻。