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.

[参考译文] TM4C1233H6PM:外部振荡器

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/564869/tm4c1233h6pm-external-oscillator

器件型号:TM4C1233H6PM

如果 m 连接使用外部振荡器的器件。 我是否还需要以该速率运行我的控制器? Ds1307使用晶体振荡器32.768kHz。 以便在 LCD 之类的东西或七个段上显示它。。。我是否应该运行具有外部振荡器的微控制器。 如果不是、则不会出现波束计时问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您运行微控制器的频率与其他器件的频率无关(除非您转到需要噪声分析、EMI 等的更高级项目)。
    您只需确保这些器件之间的通信以两种接受的频率进行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Muhammad

    情况并非如此(根据我的经验)。 微控制器使用大量接口、这些接口可以以不同的时钟速率或波特率运行、并用于连接到可能完全位于不同时钟域中的较慢器件(有些则不具有一个时钟域)。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ds1307驱动程序和七个段(显示)驱动程序均运行良好。 但是、当我将它们组合在一起时、它们不会做出响应。
    您认为这有问题吗?
    int main()


    init_gpio(); 用于七段的//GPIO 引脚
    InitI2C();
    I2Csend (device_address、reg_addr、0);
    SetTimeDate (45、34、9、4、23、1、14);

    while (1)


    seconds=I2CReceive (device_address、reg_addr++);
    minutes=I2CReceive(device_address,reg_addr++);
    小时=I2CReceive (device_address、reg_addr++);
    days=I2CReceive(device_address、reg_addr++);
    DATE=I2CReceive(DEVICE_ADDRES,REG_ADDR++);
    Month=I2CReceive (device_address、reg_addr++);
    yage=I2CReceive (device_address、reg_addr);
    REG_addr=0;
    显示(秒、分钟、小时); //这是显示驱动程序


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

    我应该如何通过查看一些 API 来了解它们在做什么、您所构建的电路是什么?

    此外、您目前已经执行了什么调试来隔离连接7段显示器时 I2C 为何不工作? 请详细说明?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果我删除了"display()"和"init_gpio()"仿真器(Keil)显示结果的时间(即秒)等、但这两行用于在七个段 I2C_DATA_register 上显示 ds1307结果的时间显示为零。 MASTER_SLAVE_ADDRESS_REG 卡在发送上、显示 D0 (它显示 D1用于接收、D0用于发送)。 因此、我认为程序卡在"Init_I2C"上。 未执行前面的任务。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Muhammad

    当器件是真实的且至少存在于 LaunchPad 上时、为什么需要相同的仿真器。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Keil 是嵌入式系统的调试器...对我的问题有什么想法吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Muhammad

    仿真器与调试器不同。 那么、您使用的是物理板还是一些仿真器环境?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    m 使用物理板...tm4c123g

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

    您是否探测了 I2C SCL 和 SDA 总线? 上拉电阻是否正确连接、总线处于空闲状态时显示"H"逻辑电平。 如果是、那么您是否检查了交易本身?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    DSP 1307和七段驱动器分别准确响应。 当我将它们组合在一起时,问题就开始了。。。。。如上面的代码"int main()"display()和 init_gpio 来自七段驱动程序,所有其它都来自 ds1307驱动程序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Muhammad

    你可以理解我的困境。 我无法访问您拥有的相同设备。 我没有任何调试功能来检查正在发生的情况。 此外、他们单独工作的报告不足以帮助您。 您需要向我提供我所询问的调试信息、以便我可以看到可能出现的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    MASTER_STATUS_REGISTER 显示忙状态永远。 它在检查是否不忙时停留在 while 循环中...即
    while (I2C3_MSTATUS_R 和0x01){};

    如果我移除 GPIO_init、它将初始化7个段的引脚。 一切都很适合 ds1307。 但写入此值会使主器件卡在该位置。 MASTER_STATUS_REG 显示忙前灯

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

    功能 GPIO Init 中使用哪些引脚、I2C3使用哪些引脚?

    此外、请在您的回复中提供完整的功能。 我怀疑 GPIO Init 中的配置会导致 I2C 引脚的配置损坏。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    多个论坛成员通过(协助)这个主题、"7段 LED 和 LCD 时间多路复用"线程-被称为"工作"、然后被放弃。

    没有海报的主题"外部振荡器"已解决-这里的每个/每一个(最近)发布都转向振荡器的转向强度/强度太大!

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

    我的担忧来自可怕的 DRM "while (I2C3_MSTATUS_R & 0x01){};"来自 OP 的最后一篇文章。 我们过去曾遇到过这个问题、建议、指导海报、除非您非常确定意图(有些成功、有些没有利益冲突)、否则请勿使用 DRM
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    嗯 Amit -我想你可能会担心海报使用更复杂的编码形式。

    还是-我们是否不敦促"选择正确描述的论坛标题-(然后)保持在这些范围内?"

    这条曲折的线程现在有多大可能被分类-为未来的读者服务?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在 i2c3中、引脚 A 和 B 用于 GPIO INIT、引脚 D0、D1用于 SCL 和 SDA。

    空 init_gpio()


    SYSCTL_RCGCGPIO_R |=0x3;

    GPIO_PORTB_DIR_R|=0xFF;对于 a、b、...g、dot、//B0-B7
    GPIO_PORTB_DEN_R|=0xFF;

    GPIO_PORta_DIR_R |=0xFC;//A2...A7用于段的使能引脚
    GPIO_Porta_DEN_R |=0xFC;

    空 InitI2C()

    SYSCTL_RCGCI2C_R |= 0x8;
    SYSCTL_RCGCGPIO_R |=0x8;
    GPIO_PORTD_AFSEL_R |= 0x3;//启用 PD0和 PD1的备用功能
    GPIO_PORTD_DEN_R |= 0x00000003;//数字启用 PD0和 PD1
    GPIO_PORTD_OD_R |=0x2;//为 PD1启用开漏操作
    GPIO_PORTD_PCTL_R |=(GPIO_PCTL_PD0_SCL | GPIO_PCTL_PD1_SDA);/0x00000033
    I2C3_MCONF_R |=0x10;//将 I2C3初始化为主器件
    I2C3_MTIEPER_R = 0x7;

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

    因此、这里的基本配置似乎是正确的。 现在、请在示波器上提供 I2C 捕获以查看总线上发生的情况。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    空 I2Csend (unsigned char slave_addr、unsigned char data_addr、unsigned char 数据)

    while (I2C3_MSTATUS_R & 0x01){};//忙

    I2C3_MSA_R =(SLAVE_ADDR <1);//配置从器件进行写入

    I2C3_MDATA_R = DATA_addr;

    I2C3_MCONTROL_R =CMD_BURST_SEND_START;  //0x03

    while (I2C3_MSTATUS_R & 0x01){};//这是 stuck...not 溢出循环的位置...如果 GPIO_init 在 main 中调用...这是一行...

    I2C3_MDATA_R =数据;

    I2C3_MCONTROL_R = CMD_BURST_SEND_CONT;//0x01

    while (I2C3_MSTATUS_R 和0x01){};

    I2C3_MCONTROL_R = CMD_BURST_SEND_FINISH;//0x05

    while (I2C3_MSTATUS_R 和0x01){};

    unsigned char I2CReceive (unsigned char slave_addr、unsigned char data_addr)//从从从器件读取

    unsigned char 值= 0;

    while (I2C3_MSTATUS_R 和0x01){};//等待主机变为空闲状态(最后一个是忙位)

    I2C3_MSA_R =(SLAVE_ADDR <1);//配置从器件进行写入

    I2C3_MDATA_R = DATA_addr;

    I2C3_MCONTROL_R =CMD_SINGLE_SEND;//0x07

    while (I2C3_MSTATUS_R 和0x01){};

    I2C3_MSA_R =((SLAVE_ADDR<1)| 0x01);//配置从器件进行读取

    I2C3_MCONTROL_R =CMD_SINGLE_Receive;//0x07

    while (I2C3_MSTATUS_R 和0x01){};

    Value=(unsigned char) I2C3_MDATA_R;

    返回值;

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

    请提供示波器捕获!!!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    什么是 scope.capture...I 不理解..
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好,Muhammad

    I2C SDA 和 SCL 引脚的示波器捕获。