硬汉嵌入式论坛

 找回密码
 立即注册
查看: 538|回复: 3
收起左侧

[I2C控制器] H7-TOOL新版2.24固件增加的I2C从机模式完成收尾,速度最高1MHz,开启Fast-mode Plus模式

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
发表于 2023-11-15 00:32:48 | 显示全部楼层 |阅读模式
从机是采用硬件I2C实现,开启了Fast-mode Plus (1 MHz)

在新的2.24版程序上测试已经没问题,作为从机的情况下,发送和接收都正常。剩下就是发布前制作个操作说明,并在上位机上增加个操作界面。

测试从机I2C接收,800KHz

[Lua] 纯文本查看 复制代码
print("I2C从机接收测试")

i2c_bus("initslave", 0x20) -- 8bit = 7bit地址+读写控制位

 len, str = i2c_bus("reciveslave", 9, 3000)
 print(string.format("接收数据大小:%d", len))
 print_hex(str)

i2c_bus("deinitslave") 


[Lua] 纯文本查看 复制代码
-- 设置I2C速度是
i2c_bus("init", 100000)

i2c_bus("start")   -- 启动
ack = i2c_bus("send", 0x20) -- 写操作

if (ack ~= 0) then
    print("I2C从机无应答 send address")
end

ack = i2c_bus("send", "023225678")  -- 发送数据

if (ack ~= 0) then
    print("I2C从机无应答 send ")
end

i2c_bus("stop")



1.png

测试从机I2C发送,800KHz
[Lua] 纯文本查看 复制代码
print("I2C从机发送测试")

i2c_bus("initslave", 0x20) -- 8bit = 7bit地址+读写控制位

for i=1, 10, 1 do
 len = i2c_bus("sendslave", "123456789", 3000)
 print_hex(len)
end

i2c_bus("deinitslave") 


[C] 纯文本查看 复制代码
-- 设置I2C速度是
i2c_bus("init", 100000)

for i = 1, 10, 1 do
i2c_bus("start")   -- 启动
ack = i2c_bus("send", 0x21) -- 写操作

--if (ack ~= 0) then
 --   print("I2C从机无应答 send address")
--end

str = i2c_bus("recive", 9)  -- 发送数据

print("接受字符"..str)

i2c_bus("stop")
 

end


下载 (1).png







回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
 楼主| 发表于 2023-11-15 00:36:05 | 显示全部楼层
剩下最后一个SPI从机模式收尾工作,白天开始整理。
回复

使用道具 举报

0

主题

69

回帖

69

积分

初级会员

积分
69
发表于 2023-11-15 11:18:42 | 显示全部楼层
I2C主从机状态动态切换,是否正常。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106738
QQ
 楼主| 发表于 2023-11-15 11:53:09 | 显示全部楼层
Vxworks 发表于 2023-11-15 11:18
I2C主从机状态动态切换,是否正常。

可以,支持动态切换。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-3 01:44 , Processed in 0.267221 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表