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.

[参考译文] CCS/MSP430FR5994:使用 I2C 与摄像头通信、但不接收 ACK

Guru**** 2578945 points
Other Parts Discussed in Thread: MSP430FR5994

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/904361/ccs-msp430fr5994-using-i2c-to-communicate-with-a-camera-but-receive-no-ack

器件型号:MSP430FR5994
主题中讨论的其他器件: MSP430WARE

工具/软件:Code Composer Studio

您好!  

我尝试使用 MSP430FR5994 Launchpad I2C 与 OV7670摄像头进行通信。 与摄像机交互的第一件事是通过 I2C 设置其寄存器。 我使用逻辑来分析从 SDA 引脚发出的信号、可以看到摄像机的地址能够成功发送出去、但摄像机没有回复、没有 ACK 发回。

因此、我想可能有两个原因:(1) I2C 代码运行不好;(2)摄像头不工作;我通过执行以下操作排除了这两个原因:

(1)我使用了另一个外设器件(DS3231、一个外部 RTC 模块)通过 I2C 与 MSP 进行通信。 它工作得非常好。 我可以在发送 SLAVE_ADDR 后获取 ACK、对于 DS3231、该地址为0x68。 0x21是摄像机的从地址。 这不包括第一个原因。 我的 I2C 代码运行良好;我的 I2C 代码实际上来自 MSP 官方示例代码 MSP430Ware -器件- MSP430FR5XX_6XX - MSP540FR5994 -外设示例-寄存器级别- msp430fr599x_eusci_i2c_standard_master.c

(2)然后、我还使用 Arduino 板通过 Arduino 的 I2C 与摄像机通信。 它也能很好地工作。 Arduino 可从相机获取所有寄存器的值。 因此、这排除了第二个原因。 摄像头状态也不错。

在排除了这两个原因后、我尝试了以下操作:  

(1)上拉电阻器:我没有尝试过用于 MSP 的上拉电阻器、1KOhm、4.7KOhm、12.5KOhm 电阻器、它们都不起作用。 但是、对于 Arduino 板、无论它没有上拉电阻器或任何这些值、它们都能正常工作。 因此、上拉电阻也不是问题;

(2)电源:在所有情况下、我只使用3.3V 电压。 Arduino 和 MSP 板均具有3.3V 电源。 我尝试通过 MSP 的3.3V 电源为摄像头加电、然后使用 Arduino 与摄像头通信、但它工作正常;我还尝试通过 Arduino 为其加电并通过 MSP 与其通信、但它仍然无法正常工作; 因此电源也不是问题;

(3)摄像机版本。 OV7670有两个版本、具有或不具有 FIFO 存储器。 我有两个版本、并尝试了这两个版本。 两个电路板均可与 Arduino 配合使用、但两者均不能与 MSP 配合使用;

我在这一问题上遇到了三天的麻烦、并尝试了我能想到的一切。 有什么想法是导致我的问题的原因?

谢谢、

Yubo

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

    你好、Yubo、

    您是否在通信期间将逻辑分析仪连接到 Arduino I2C 线路、以确定信令是否存在差异?  我可能会遇到的一种情况是通信频率可能不同。  (两种情况下的通信都是标准模式吗?)

    BR、
    Leo

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

    您好、Leo、

    是的、我已将逻辑分析仪用于 Arduino I2C 线路、并且发送的信号是预期的。 信号传输没有差异、只是非常标准的 I2C 信号、如以下链接所示: https://e2e.ti.com/blogs_/b/process/archive/2016/05/03/msp-i2c-getting-started-guide

    后来、我又累了我们实验室的另一个摄像头、这是一个 Arducam-Mini-2MP 摄像头、它可以与我的 MSP I2C 代码完美配合使用。 当然、它也适用于 Arduino。 这些信号也是非常标准的 I2C 信号、没有区别。  

    至于 通信频率、当 OV7670与 Arduino 配合使用时、我检测到通信频率为100KHz、我尝试了与 MSP 配合使用的 OV7670相同的通信频率、但未能正常工作。  

    谢谢、

    Yubo

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

    您是否相当确定摄像机已启动? 我没有 OV7670、但我对如何应用 Power+RST+XCLK 感到非常不满意、而且这里和那里都有延迟(这并不总是与书中的延迟匹配)。 唯一的症状是它不会 ACK I2C。

    听起来 Arduino 代码知道如何执行此操作。 从中借款可能是值得的。