OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 11271|回复: 12

硬件接口 I2C、SPI在数据读写时被中断打断,时序是否出错

[复制链接]

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2013-10-27
在线时间
23 小时
发表于 2013-11-22 18:57:57 | 显示全部楼层 |阅读模式
各位大侠,大家有没有注意到这类的问题,就是普通单片机、ARM单片机的I2C接口、SPI接口在读写数据的过程中被中断打断后,读写数据是否会受到中断的影响,从而使读写数据错误,欢迎高手辩解。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-11-22 22:11:37 | 显示全部楼层
硬件SPI,没这个特殊要求.
硬件IIC就不知道了.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

4

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
118
金钱
118
注册时间
2013-10-27
在线时间
23 小时
 楼主| 发表于 2013-11-22 22:29:37 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子兄,我个人感觉SPI与I2C都可能出现这样问题的,SPI硬件只要是能,在数据传送完前时钟是一直有效的,但是数据读写过程中被中断打断,SPI的时钟引脚的波形是不会变的,但是数据上的数据肯定会受到影响,因为处理中断时CPU并没有继续在读写数据,当然DMA来操作SPI读写要出除外。再说I2C吧,更是,根据I2C的时序特点,在中断的时间过长,主机无法接收到从机的应答信号,也会使得数据出错。个人愚见,欢迎原子兄和这里大师级的高手批改
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2013-11-22 23:22:50 | 显示全部楼层
回复【3楼】liuxuefei11:
---------------------------------
SPI不存在这个问题啊,通信过程可以被打断,spi是硬件的,你写了,就会去传输,不受你中断影响.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

30

主题

184

帖子

0

精华

高级会员

Rank: 4

积分
688
金钱
688
注册时间
2014-9-19
在线时间
191 小时
发表于 2017-3-1 11:19:55 | 显示全部楼层
正点原子 发表于 2013-11-22 23:22
回复【3楼】liuxuefei11:
---------------------------------
SPI不存在这个问题啊,通信过程可以被打断,spi ...

原子哥 外部中断较多会影响spi的传输吗?这是你在某个帖子里说的
(我的读SD卡,都是最底层的时候,就关闭任务调度,防止OS打断.从而保证此次数据成功写入,其实这也不会损耗你太多时间. )
我的也是中断较多,发现了spi的芯片不正常,但是不确定是数据量大对芯片造成的影响,还是中断对spi造成的影响。
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2023-12-14
在线时间
5 小时
发表于 2023-12-14 13:39:47 | 显示全部楼层
正点原子 发表于 2013-11-22 22:11
硬件SPI,没这个特殊要求.
硬件IIC就不知道了.

原子哥,我这有个程序困扰已久,三个定时器中断,1k优先级1,10k的优先级3级,40k的优先级2级,然后我iic以100k读没有问题,但是400k程序就死了,仿真显示在发送子地址后,就一直等待iic寄存器的某一位置1,然后就s了,我把三个中断注释掉,就又可以400k通信了,困扰已久,望原子哥给指点一下
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2023-12-14
在线时间
5 小时
发表于 2023-12-15 09:19:56 | 显示全部楼层
liuxuefei11 发表于 2013-11-22 22:29
回复【2楼】正点原子:
---------------------------------
原子兄,我个人感觉SPI与I2C都可能出现这样问题 ...

大哥,我的硬件iic被定时器中断打断后,再返回iic然后程序就g了,显示ev5或者ev6或者就是总线忙没反应,您是咋解决这个问题的,软件iic会不会好点
回复 支持 反对

使用道具 举报

0

主题

451

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3316
金钱
3316
注册时间
2016-3-19
在线时间
815 小时
发表于 2023-12-15 10:17:44 | 显示全部楼层
又是一年冬 发表于 2023-12-15 09:19
大哥,我的硬件iic被定时器中断打断后,再返回iic然后程序就g了,显示ev5或者ev6或者就是总线忙没反应, ...

没有使用过STM32硬件IIC    都是软件模拟

如果功能结构设计允许的情况下  先关全局中断  操作完后再打开全局中断

如果中断设计时  不允许关中断  可以考虑SVC中断操作

其它方式  等待高手指点
Nothing is impossible
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2023-12-14
在线时间
5 小时
发表于 2023-12-15 13:47:34 | 显示全部楼层
unnormal 发表于 2023-12-15 10:17
没有使用过STM32硬件IIC    都是软件模拟

如果功能结构设计允许的情况下  先关全局中断  操作完后再打 ...

我需要频繁的读取iic采样的数据,没有办法关闭中断后再打开iic太频繁了,后来我尝试将iic函数放在定时器中断里(假设时间65ms)但是360k可以通信,400k就是不行;我把全局中断都给关闭了,但是400k不能 通信,360k可以通信,360001包括360001往后就不能iic通信;我现在去试试把上拉阻值和接线电路改一下,再去试试。还有软件iic也去试试
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2023-12-11
在线时间
1 小时
发表于 2023-12-18 17:22:04 | 显示全部楼层
又是一年冬 发表于 2023-12-14 13:39
原子哥,我这有个程序困扰已久,三个定时器中断,1k优先级1,10k的优先级3级,40k的优先级2级,然后我iic ...

大佬 后面是怎么处理好的
回复 支持 反对

使用道具 举报

1

主题

14

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2023-12-14
在线时间
5 小时
发表于 2023-12-29 12:04:22 | 显示全部楼层
还没解决呢,就100k凑合用,等时间充足了试试软件iic,
回复 支持 反对

使用道具 举报

12

主题

156

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2555
金钱
2555
注册时间
2017-12-16
在线时间
188 小时
发表于 2023-12-30 15:59:46 | 显示全部楼层
硬件I2C 会受到影响!亲身体会!
回复 支持 反对

使用道具 举报

3

主题

1906

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4100
金钱
4100
注册时间
2018-8-14
在线时间
695 小时
发表于 2023-12-30 16:02:19 | 显示全部楼层
不管是软件模拟或硬件的SPI或IIC。

中断能影响的是在时序的某一点插入一延迟而已, 而这样的延迟一般就几个微秒,它是不应该也不可能会影响到通信的,甚至延迟到一两百个微秒也不应该影响通信的。

如果说加了个延迟就通信不了,那问题一定是在超出通信时序的规定。
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 12:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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