主题:[求助] 阻塞式读取SPI和I2c 共有102077人关注过本帖 |
---|
![]() lgz |
1楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
你好,因为spi和i2c都是主从设备的模式,你在应用程序里面进行读写,3354上的spi和i2c都会马上进行数据读写,读写完设置的数据或者是检测到总线错误后才会返回,这两种总线的阻塞非阻塞读写没有意义,函数返回的时候肯定是完成了读写或者总线出错(i2c有应答信号检测),而且作为主设备会控制时钟信号,不会出现串口那种没有预期的等待数据的状态。你所说的阻塞读取是想实现什么
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
2楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
这两个总线都是有时钟信号同步的,3354上的作为主设备生成时钟信号并且只在时钟信号上进行采样,这个过程与从设备是否发送数据无关,对于i2c拉低时钟信号的情况,会等到所有数据接收完成后函数才会返回
[此贴子已经被作者于2016-11-28 17:33:24编辑过]
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
3楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
你好,多线程中请做好线程的同步互斥管理,不要同时读写
i2c驱动没有引出时钟频率设置函数,i2c设备只分标准模式和高速模式,我们现在的配置是高速模式,如果你的设备支持高速模式那就是可以进行通信的,高速模式应该是兼容标准模式的,如果你的设备是标准模式的设备并且没法和我们主板通信,我们可以给你配置成工作于标准模式的
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
4楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
你好,请先确定你的设备的i2c地址,如果地址不对,i2c设备是不会返回应答信号的,应用程序就会返回remote io error了
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
5楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
是的,应用程序可以参考我们光盘中的I2C扩展模块的应用,另外不要操作I2C复用的GPIO(26、27)
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
6楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
要重新烧写固件,我一会邮件发给你
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
7楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
好的,spi可以设置时钟频率,esm3354最高为48MHz
|
单帖管理 | 引用 | 回复 ![]() |
![]() lgz |
8楼 信息 | 搜索 | 邮箱 |
![]() ![]() ![]() ![]() |
![]()
2个外部中断,可以查看dev文件夹下面的设备节点
|
单帖管理 | 引用 | 回复 ![]() |