关于IIC通信 SDA和SCL的设置问题--求高手解决

wuruogeng 2010-01-21 03:33:53
大家好
最近在搞IIC的驱动。属于硬件IIC。使用的事NEC的V850系列单片机。
请问在进行硬件初始化时。IIC通信的两个端子,即SDA和SCL端子,是设置为输入端子还是设置为输出端子,另外,如果设置为输出的话,那么端子的初始状态是设置为High还是Low?
最后请问的是在通信端子的设置上。输入和输出的设置有什么原则,另外,初始化的电平是设置为高还是低,有没有什么原则?多谢了
...全文
2380 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunqian09 2010-07-25
  • 打赏
  • 举报
回复
官网一般有例程的,下载看一下吧
wowocpp 2010-01-29
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 kyzf 的回复:]
引用 3 楼 wuruogeng 的回复:
引用 2 楼 cfanlwn 的回复:
你的单片机有IIC吗?如果有 要把SCL和SDK设置为IIC功能
如果没有,也就是用IO口模拟IIC时序,这两个要设置为输出口的,给他们两个不同的电平状态,模拟IIC时序


你好:
我了解了,我用的NEC系列的芯片。IIC资源的端子是可以复用的(包括IO功能,UART功能等)。是不是说我选择了这两个段子为IIC端子。那么就不用去设置它的输入输出状态了,而且初始为高电平还是低电平也都没有关系。。(那么SPI或者是Uart是不是同理?)
我手上这两个驱动的代码好像也验证了上面的说法。。即输入输出状态和初始电平不需要设置。

另外,我还想问一下,设置为输出状态,那么我们单片机内部就可以拉高或者拉低这个端子。
那么设置为输入的话,我们就控制不了了吧。只能由外部的电路拉高拉低,我们进行读取?


楼主领悟得基本正确。
1、当单片机的IO复用于特殊功能(I2C、ADC、DAC、UART、SPI等等)时,一般只需把该IO配置成特殊功能即可,之后就不用管什么输入与输出。
2、单片机的IO作为输出时,则是对外提供 电流,即体现单片机的IO驱动电流,所以此时需要设置上拉或下拉。
而作为输入时,强调的是灌电流,即外部灌入电流,所以此时不管上拉或下拉。
[/Quote]
想问个问题,I/o作为输入,电流都是由外部提供的吗?
mxm1986 2010-01-29
  • 打赏
  • 举报
回复
iic的好,不要模拟,会被烦死的~~~
老人参 2010-01-29
  • 打赏
  • 举报
回复
不太了解nec的单片机,你去厂家的官方网站,应该能找到demo ,和资料,看看iic的demo就会用了,

一般编译软件的目录里,都有demo,可以看看参考一下,应该不是问题吧
aaassd_cn 2010-01-26
  • 打赏
  • 举报
回复
看你有没有i2c控制器了 有的话可以配置
没有就要gpio模拟 默认配置成高电平
kyzf 2010-01-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wuruogeng 的回复:]
引用 2 楼 cfanlwn 的回复:
你的单片机有IIC吗?如果有 要把SCL和SDK设置为IIC功能
如果没有,也就是用IO口模拟IIC时序,这两个要设置为输出口的,给他们两个不同的电平状态,模拟IIC时序


你好:
我了解了,我用的NEC系列的芯片。IIC资源的端子是可以复用的(包括IO功能,UART功能等)。是不是说我选择了这两个段子为IIC端子。那么就不用去设置它的输入输出状态了,而且初始为高电平还是低电平也都没有关系。。(那么SPI或者是Uart是不是同理?)
我手上这两个驱动的代码好像也验证了上面的说法。。即输入输出状态和初始电平不需要设置。

另外,我还想问一下,设置为输出状态,那么我们单片机内部就可以拉高或者拉低这个端子。
那么设置为输入的话,我们就控制不了了吧。只能由外部的电路拉高拉低,我们进行读取?
[/Quote]

楼主领悟得基本正确。
1、当单片机的IO复用于特殊功能(I2C、ADC、DAC、UART、SPI等等)时,一般只需把该IO配置成特殊功能即可,之后就不用管什么输入与输出。
2、单片机的IO作为输出时,则是对外提供 电流,即体现单片机的IO驱动电流,所以此时需要设置上拉或下拉。
而作为输入时,强调的是灌电流,即外部灌入电流,所以此时不管上拉或下拉。
sdr06 2010-01-22
  • 打赏
  • 举报
回复
一般要加上拉电阻;至于单片机端口:如果是模拟的话,输入输出你要自己设置,操作时序要与IIC协议一致;如果可以配置为IIC模块,,按照单片机的数据手册,配置对应的寄存器,就可以了
宇帆 2010-01-21
  • 打赏
  • 举报
回复
IIC资源的端子是可以复用的 说明的CPU内涵集成了IIC模块,你就把他们设置成IIC功能就可以了,不用再去设置输入输出了

你去控制IIC 应该有相应的寄存器 控制寄存器,数据寄存器,状态寄存器等等

如果你要把IO口设置为输出口的话 你就可以给这个IO口0或者1 让它输出电平的

如果你要把IO口设置为输入口的话,由外围电路来决定IO的状态,我们来读这个IO口的电平状态就可以了,就不能软件在去设置了
gelu1040 2010-01-21
  • 打赏
  • 举报
回复
硬件IIC直接启用就行了, 不用配置IO,配置成IO反而错了
lin0119 2010-01-21
  • 打赏
  • 举报
回复
这个要看芯片的说明书,一般是使能了IIC模块以后,就不需要去手动管理IO。
wuruogeng 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cfanlwn 的回复:]
你的单片机有IIC吗?如果有 要把SCL和SDK设置为IIC功能
如果没有,也就是用IO口模拟IIC时序,这两个要设置为输出口的,给他们两个不同的电平状态,模拟IIC时序
[/Quote]

你好:
我了解了,我用的NEC系列的芯片。IIC资源的端子是可以复用的(包括IO功能,UART功能等)。是不是说我选择了这两个段子为IIC端子。那么就不用去设置它的输入输出状态了,而且初始为高电平还是低电平也都没有关系。。(那么SPI或者是Uart是不是同理?)
我手上这两个驱动的代码好像也验证了上面的说法。。即输入输出状态和初始电平不需要设置。

另外,我还想问一下,设置为输出状态,那么我们单片机内部就可以拉高或者拉低这个端子。
那么设置为输入的话,我们就控制不了了吧。只能由外部的电路拉高拉低,我们进行读取?
宇帆 2010-01-21
  • 打赏
  • 举报
回复
你的单片机有IIC吗?如果有 要把SCL和SDK设置为IIC功能
如果没有,也就是用IO口模拟IIC时序,这两个要设置为输出口的,给他们两个不同的电平状态,模拟IIC时序
wuruogeng 2010-01-21
  • 打赏
  • 举报
回复
自己顶一下。。
IIC通信的电路上基本上都是有一个上拉电阻的,这是不是说系统上电后,自然就会为高电平?
我发现以前做过的驱动中,有的是设置为输入,有的是设置为输出。。很奇怪,是不是输入输出对通信没有影响?

27,377

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧