OpenEdv-开源电子网

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

关于FreeRTOS下AT24C02写入不正确

[复制链接]

7

主题

27

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
389
金钱
389
注册时间
2019-4-25
在线时间
74 小时
发表于 2021-10-6 11:12:16 | 显示全部楼层 |阅读模式
5金钱
写: 写.png

读: 读.png

主函数:
主函数.png

AT24C02写函数
写一串.png

写单.png

现在问题是写不进去,我用原子IIC例程改了引脚,main函数里面一样,正常读写;但我在FreeRTOS任务里读写,却写不进去,即使向上面一样,我直接在main函数里读写,注释掉任务创建和开启任务调度,也是写不进去。
有大佬能提供下解决思路嘛?


最佳答案

查看完整内容[请看2#楼]

直接用原子例程有点问题的,我以前也遇到过,停止信号少了一个延时 //产生i2c停止信号 void i2c_stop(void){ SDA_OUT();//sda线输出 I2C_SCL=0; I2C_SDA=0;//STOP:when CLK is high DATA change form low to high delay_us(4); I2C_SCL=1; delay_us(2); I2C_SDA=1;//发送I2C总线结束信号 delay_us(4); }
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

17

帖子

0

精华

初级会员

Rank: 2

积分
127
金钱
127
注册时间
2020-12-25
在线时间
22 小时
发表于 2021-10-6 11:12:17 | 显示全部楼层
直接用原子例程有点问题的,我以前也遇到过,停止信号少了一个延时
//产生i2c停止信号
void i2c_stop(void){
  SDA_OUT();//sda线输出
  I2C_SCL=0;
  I2C_SDA=0;//STOP:when CLK is high DATA change form low to high
  delay_us(4);
  I2C_SCL=1;
  delay_us(2);
  I2C_SDA=1;//发送I2C总线结束信号
  delay_us(4);
}
回复

使用道具 举报

1

主题

82

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3158
金钱
3158
注册时间
2017-7-10
在线时间
361 小时
发表于 2021-10-14 16:59:31 | 显示全部楼层
FreeRTOS小确认一下delay_ms(10)是否正常?
回复

使用道具 举报

8

主题

168

帖子

0

精华

高级会员

Rank: 4

积分
557
金钱
557
注册时间
2015-7-4
在线时间
104 小时
发表于 2022-8-25 11:14:46 | 显示全部楼层
模拟IIC写入读取的时候最好在临界区,进制高优先级任务中断,导致IIC时序错误
回复

使用道具 举报

0

主题

4

帖子

0

精华

初级会员

Rank: 2

积分
69
金钱
69
注册时间
2019-4-15
在线时间
17 小时
发表于 2023-4-26 14:39:55 | 显示全部楼层
兄弟你这个问题解决了吗,我也出现这样的问题,at2408怎么都写不进去
回复

使用道具 举报

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2020-11-9
在线时间
17 小时
发表于 2023-11-9 13:33:35 | 显示全部楼层
weiguanS 发表于 2021-12-1 09:52
直接用原子例程有点问题的,我以前也遇到过,停止信号少了一个延时
//产生i2c停止信号
void i2c_stop(voi ...

我加上这个延时,好了,正常不使用ucos没啥事,一用ucos原子这个写24c02就出问题,在临界区都不行
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-22 17:06

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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