完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
您好,这将是一个相当高级的问题,所以请耐心等待直到最后。
我目前正在研究 I2C 通信,在配置中我有一个控制器可以在自定义 PCB 上初始化 4 个 STM32g0。 TL;DR:我想利用 I2C 总线被驱动为低电平但不起作用的事实,通过广播组合从目标发射器传输的数据。 语境 在初始化时,I2C 控制器(在 SoC 上)将使用自定义 ID 和两个地址单独设置每个 STM32g0 板(目标):一个广播地址和一个单独地址(取决于 ID)。这是在多路复用器的帮助下完成的,在初始化之后,多路复用器始终被设置,以便所有 STM32g0 都连接到 I2C 总线。 目前,控制器发送一条命令,表示它将请求分别向每个目标 (STM32g0) 读取一些特定数据,然后在重复启动条件后读取数据。 I2C 通信目前看起来像这样: (S) (ADDR_X)(W)(A)(CMD)(A)(P)(Sr)(ADDR_X)(R)(A)(DATA_0)(A)..(DATA_N)(N) (P) (S) : 开始条件 (Sr) : 重复开始条件 (ADDR_X) : ID = X ( 1 <= X <= 4) 的设备地址 (R)/(W) : 传输方向位 (A)/(N):ACK 和 NACK (CMD) : 命令(由自定义协议定义) (DATA_0)...(DATA_N) : 控制器请求的数据负载 (P) : 停止条件 此通信将为每个设备重复 4 次。 I2C 通信由 DMA 处理,并启用了拉伸。 我想做什么 我想改为使用广播地址请求数据并获得这样的有效负载: (S) (ADDR_BR)(W)(A)(CMD)(A)(Sr)(ADDR_BR)(R)(A)(1_DATA_0)(A)..(1_DATA_N)(A)....(4_DATA_0 ..(4_DATA_N)(N) (P) (ADDR_BR) :广播地址 因此,控制器将进行一次 N*4 传输,而不是 4 次 N 字节传输。这个想法是利用 I2C 线路低电平有效这一事实,这意味着发送 0XFF 字节应该等同于让线路空闲。 所以我认为像这样的单个有效负载(每个 STM32 都不同)会起作用: (例如,对于 ID = 3 的设备) [NOTMY_DATA][NOTMY_DATA] [MY_DATA] [NOTMY_DATA] 这里所有的 NOTMY_DATA 字节都是 0xFF 字节(只有一个),我认为这应该转化为“我没有驱动 SDA 线”之类的东西,因为在 I2C 中,SDA 线处于低电平状态。 因此,当轮到目标不发送其数据时,它不会驱动 SDA 线,因为它只输出“1”,这样应该驱动 SDA 线的目标将手放在 SDA 线上并可以发送其数据(即在需要时下拉)。 问题 实际上,它根本不起作用。我实际上正在尝试使用 2 个目标设备和总线上的控制器,但观察两个目标的 SCK 和 SDA 线表明总线上看到的总有效载荷是第一个目标传输不同于 0xFF 的数据的有效载荷。实际上没有有效载荷的“合并”。 我已经检查过这不是硬件问题(多路复用器或 PCB),因为我修改了代码,使我希望无法通信的目标 STM32 设备通过将数据中间的线拉低来断开 SDA 线有效载荷传输。我确实在示波器上观察到预期的通信中断。 我有点不知所措。 我最好的猜测是 STM32 I2C 硬件实现了某种错误检查,监控它发送的内容和在总线上看到的内容,然后在两者不匹配时中止 I2C 传输。 有没有人对此有任何见解?我知道 I2C 规范未指定此用例,但没有人说它不应该或不起作用。 ' |
|
相关推荐
1个回答
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
请教:在使用UDE STK时,单片机使用SPC560D30L1,在配置文件怎么设置或选择?里面只有SPC560D40的选项
2741 浏览 1 评论
3244 浏览 1 评论
请问是否有通过UART连接的两个微处理器之间实现双向值交换的方法?
1813 浏览 1 评论
3653 浏览 6 评论
6043 浏览 21 评论
1342浏览 4评论
203浏览 3评论
对H747I-DISCO写程序时将CN2的st-link复用为usart1,再次烧录时无法检测到stlink怎么解决?
356浏览 2评论
STM32G474RE芯片只是串口发个数据就发烫严重是怎么回事?
445浏览 2评论
STM32处理增量式编码器Z信号如何判断中断是正转的还是反向转的?
275浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-26 03:08 , Processed in 1.546715 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号