OpenEdv-开源电子网

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

GPIO引脚模拟IIC访问PCF8591出现的问题

[复制链接]

8

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2019-1-18
在线时间
18 小时
发表于 2019-1-23 17:22:43 | 显示全部楼层 |阅读模式
1金钱
各位,我使用GPIO引脚模拟IIC主机模式去访问PCF8591,读取它的某个通道的AD转换的结果。已经可以确定的是我的IIC读写时序是正确的(已通过示波器检测SCL和SDA的波形及时序逻辑均正常),但是不知道为何实际运行情况与发送给PCF8591寄存器的那个字节会出现差异。PCF8591的数据手册里说道,发送给它的控制字节(一个IIC访问过程发送的第2个字节)的各个位的的定义如下:

所以根据以上的控制字的释义,如果我想要读取ch0通道的AD转换值的话,那么我直接发送完pcf8591的IIC写地址后,再发送‘0x00’,再发送一个ST信号,再发送读PCF8591地址,再读取IIC总线数据就能得到相应的AD转换数据结果。我的代码如下:

按照手册,如果想读取ch0通道的AD值的话,那么发送的控制字应该是0x00才对,可是我发送0x00却每次读取的值都是固定不变的,如果我发送0x40过去就能够正常的读取到。
0x40即 0100 0000 这里的1应该是DA转换输出时候的缓冲器使能开关才对,为何需要设置而且会影响到我的AD转换的结果,还是我有哪里弄错了。请各位帮忙解答下,多谢!


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-1-24 02:54:36 | 显示全部楼层
回复

使用道具 举报

8

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2019-1-18
在线时间
18 小时
 楼主| 发表于 2019-1-26 15:10:49 | 显示全部楼层
本帖最后由 huangtaichen 于 2019-1-26 15:18 编辑

版主。你好!
关于STM32F10x定时器,有几个问题想请教下您,先谢谢!
1、输入捕获和比较输出是针对一个通道说的,还是针对于某个定时器说的?即是否有可能某个特定的定时器的4个通道,是否配置成其中2个通道工作于比较输出,另外剩下的2个通道工作于输入捕获;
2、如果问题1当中的说法是针对于通道而言的,那么该通道是工作于[比较输出]还是[捕获输入]是由哪个寄存器的什么位确定的;如果这分别由不同的位确定,如果同时都写有效让他们开启会怎样?
3、如果2问题的答案是,某个通道可同时工作于捕获输入和比较输出,那么我看捕获和输出是共用相同的引脚的,此时应该怎么样配置,会出现什么样的情况;
-------
以上问题是最近在看通用和高级定时器时有疑惑的点,若能帮忙解答,感激万分!谢谢版主!
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-1-26 16:58:48 | 显示全部楼层
本帖最后由 nashui_sx 于 2019-1-26 18:54 编辑
huangtaichen 发表于 2019-1-26 15:10
版主。你好!
关于STM32F10x定时器,有几个问题想请教下您,先谢谢!
1、输入捕获和比较输出是针对一个 ...

PCF8591 Dac控制字节就是0x40    Adc控制字节就是0x40  + 0 1 2 3
1.可以的
2.输出比较(非冻结模式引脚为输出模式)   输入捕获(引脚为输入模式)没法同时开始
3.输出比较运行在冻结模式 应该可以与输入捕获共存,冻结模式中断内翻转io可以让任意io输出pwm,前提是精度差点  注意溢出处理
回复

使用道具 举报

8

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2019-1-18
在线时间
18 小时
 楼主| 发表于 2019-1-26 17:52:46 来自手机 | 显示全部楼层
nashui_sx 发表于 2019-1-26 16:58
PCF8591 Dac控制字节就是0x40    Adc控制字节就是0x40  + 0 1 2 3
1.可以的
2.输出比较(非冻结模式引脚 ...

你好,有几个概念想厘清。
1.就是输入捕获和比较输出这两种工作模式都是针对通道来说的吧?还是说这是两种功能,不是二选一的模式?
2.您给我的回答说 某个通过可以同时进行输入捕获和输出比较。据我目前看的资料,这两种功能都会用到CCRx寄存器,那么如果两个功能同时开启了,相当于输入捕获会将捕获的值写入CCRx 而同时输出比较却要用到CCRx里的值来进行比较,那么这不是冲突了吗?
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-1-26 19:01:40 | 显示全部楼层
本帖最后由 nashui_sx 于 2019-1-26 19:08 编辑
huangtaichen 发表于 2019-1-26 17:52
你好,有几个概念想厘清。
1.就是输入捕获和比较输出这两种工作模式都是针对通道来说的吧?还是说这是两 ...

1.输入捕获和比较输出是针对通道的   功能尽量二选一吧  
定时器一般有三个功能:基本定时   输出比较  输入捕获   pwm是输出比较的特殊形式
基本定时和输出比较、输入捕获都是可以共存的

输出比较(非冻结模式引脚为输出模式)   输入捕获(引脚为输入模式)没法同时用
到底输出比较冻结模式能不能同时输入捕获,反正我没试过,stm32这么多定时器 每个4个通道,不够你用?一个项目总不能把定时器的每个通道都使用了吧

2.都用CCRx可能就是冲突的,反正我没试过

例如定时器通道2捕获通道1的pwm是没问题的
回复

使用道具 举报

8

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2019-1-18
在线时间
18 小时
 楼主| 发表于 2019-1-26 19:46:42 来自手机 | 显示全部楼层
nashui_sx 发表于 2019-1-26 19:01
1.输入捕获和比较输出是针对通道的   功能尽量二选一吧  
定时器一般有三个功能:基本定时   输出比较   ...

嗯,这倒是,主要是有些问题点想搞明白一些,用起来出了问题也心里比较有底。
另外想问下,比较输出功能的fast标志是做什么用的,?看网上说ocfastconfig的解释是设置快速特征,?这几个字没搞懂什么意思,作用何在,谢谢!
回复

使用道具 举报

8

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2019-1-18
在线时间
18 小时
 楼主| 发表于 2019-1-28 22:12:01 | 显示全部楼层
nashui_sx 发表于 2019-1-26 19:01
1.输入捕获和比较输出是针对通道的   功能尽量二选一吧  
定时器一般有三个功能:基本定时   输出比较   ...

请问下,STM32F10x的定时器里的fast标志是设定什么的,起的什么作业呀 ,谢谢您!
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-24 21:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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