新答案标记为i2c
5
不确定你把什么放入“数据溢出”的术语,但当从服务器需要一些时间等待和“思考”时,有一种机制叫做时钟伸缩。
4
STOP条件出了问题。在数据表,说,如果你想读一个字节,之前阅读你发送停止条件,但这并不能解释要做什么当你阅读超过一个字节,这就是为什么我发送停止在这里读完最后一个字节。所以,很明显,传感器发送了一个…
6
I2C有几个机制来防止数据丢失:多主碰撞检测和仲裁ACK/NACK后每个字节时钟延长(从减慢主)SMBus增加了一些增强:包错误检查(PEC),在每次传输后发送的CRC,时钟伸展限制和最大时钟周期超时,以防止总线锁定
2
最坏的情况通信错误是锁定条件,如时钟脉冲被错过和发送端保持数据位活跃。接收方可以重置,但发送方不知道。有许多锁定的场景,因此系统设计必须确保有一种恢复机制。总是在等待任何…时实现一个定义良好的超时时间。
8
I2C不提供任何错误检查的方法,因为它最初的目的是在一个出错概率非常低的单板上的组件之间进行通信,I2C实际上是interintegrated Circuit的缩写。然而,自诞生以来,I2C已用于许多应用程序,并在功能上得到了扩展。其中一个…
8
它没有。如果您想要错误纠正,则必须实现自己的错误更正代码。
2
看不出任何明显的缺陷。我会尝试一个read_uint16()函数,它使用不同的习惯用法来比较结果:val < < = 8;val | = read_byte ();还建议使用0x%x作为printf格式来调试字节顺序问题。
2
这个设计是行不通的,到处都是不兼容的东西。麦克风输出的不是I2S,而是PDM。mic PDM输出端连接CS8406的I2S输入端,不兼容。CS8406基本上是一个i2s到spdif转换器,或数字音频接口发射器。CS8406是由I2C接口控制的,它不能传输…
2
你能在MC1上的软件中实现I2C主程序吗?你只需要2个gpio。当然,这将花费一些时间,但如果你的传播时间短且足够罕见,这可能是可行的。由于I2C是同步的,而且您是在实现主端,因此没有严格的时间要求。你可以继续你的主程序循环后设置每个…
9
我会同意@voltage尖峰,可能会升级MCU是最简单的解决方案。但是,如果它真的是关于编组数据,那么这将是另一个MCU的工作。我可以理解你会犹豫,让更多的软件带到董事会上。但是,老实说,将第三个MCU的SPI外设设置为DMA成一个大型缓冲区,......
5
有些I2C/SPI桥带有内置的缓冲区,例如SC18IS602B,可能适合这个目的。
6
在不同的包装中找到一个具有更好功能并升级现有MCU的MCU比添加一些内容,这将是一个更容易。如果您目前不使用它们,您可能需要考虑的另一件事是调查硬件SPI或I2C外设(几乎每个现代MCU都有这样的东西)。硬件SPI接收信息,...
1
看到你只需要在帧的基础上同步,这应该是相当直接的:你的微控制器中不需要启动相机以1/60秒的顺序拍摄图像。所以,你只需要编写一些启动信号(例如,简单的GPIO输入高)的固件,并通过I²C告诉相机开始发送数据。如果……
3.
查看OPEN-DRAIN CONTROL寄存器的描述(在数据表的第123页):ODCONA寄存器(register 11-6)控制端口的OPEN-DRAIN特性。每个引脚单独选择开式排水操作。当设置一个ODCONA位时,相应的端口输出成为一个只能够下沉电流的开漏驱动器。当一个……
0
作为一个替代PSoC可能会帮助你,这里有一个PSoC 5lp https://hackaday.io/project/11974-averaging-many-gpses/log/39157-11-serial-ports-with-psoc5上的11 UART示例
0
我已经有很长一段时间没有看到PIC16了,所以我的记忆可能有点模糊,然而,开放排水的“通常”方法是设置端口位为0,并操纵三比特。因此,要输出逻辑0,端口位已经被设置为0,然后tris = 0来启用输出。对于逻辑1,我们依赖外部上拉电阻和设置端口…
2
我挣扎着从我的DMU5060的值,设备是(或应该是?)初始化写一个零唤醒位或更一般的,大多数例子零填满整个电源管理寄存器地址0x6B。然而,设备一直返回输出数据寄存器上的所有零,并且读回功率寄存器返回0x40,…
0
我对这个小装置也有类似的行为。它显示有2个接地引脚(5和6),但连接引脚5给出坏的数据。确保引脚6接地。
0
while循环尝试启动DMA传输,直到启动DMA传输失败。你的代码会按照你的要求去做。不要尝试启动多个DMA传输。只开始一个,等它完成后再开始另一个。
4
十六进制无关紧要,但您确实必须将数量转换为DAC单位。这是因为DAC没有关于绝对电压的想法,一切都与其参考电压成比例(这里是5V?但这取决于您的电路。该芯片的一个版本具有内部2.5V参考,另一个版本有一个销钉外部电压)。这 ...
1
一个数字是一个数字。您可以以不同的方式表示任何数字,它仍然在任何表示中的数字相同,其中二进制文件在十六进制中,八进制或十进制。所以不,它不需要转换为任何东西。如果可以读取用户以某种方式进入变量的数字,则不需要转换。
13.
需要某种延迟,因为设备正忙于编写数据。此设备的数据表为您提供了两个最小化的选项:页面写入(第5.1.2节)以时间轮询写入32个字节,而不是使用5ms的固定,最坏情况延迟(第5.1.6节)页面写入,请注意您的地址与页面对齐......
5
您无法更快地编写单个字节。每个写入操作到页面需要5ms才能完成。但是,您可以做的是将多个字节写入页面,因为芯片具有32字节的页面大小。因此,页面内最多32个字节的每次写入最多需要5ms。
其中包括了最近的50个最佳答案