39569|10

81

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

I2C通信的传输速率,比如标准100k,快速400k,等。如果我需要采样速率为10k如何实现啊 [复制链接]

I2C通信的传输速率,比如标准100k,快速400k,等。如果我需要采样速率为10k如何实现啊?

如果M4和我外接的芯片都支持100Kbps,是不是我传一系列数据,时钟线SCL就是这个速度啊100KHz?

最新回复

首先看你有没有硬件的i2c,有的话可以配置寄存器完成速率的选择。   详情 回复 发表于 2024-5-19 22:59
 
点赞 关注

回复
举报

994

帖子

3

TA的资源

一粒金砂(高级)

沙发
 
是的。
首先看你有没有硬件的i2c,有的话可以配置寄存器完成速率的选择。

点评

我使用,用M4的库函数I2CMasterInitExpClk(I2C1_Base,40000000,false),完成传输速度的配置。请问,传输速度为100Kbps,时钟线对应的是100Khz?那么采样速率是100KHz吗?  详情 回复 发表于 2015-5-21 20:30
 
 

回复

81

帖子

0

TA的资源

一粒金砂(中级)

板凳
 
machinnneee 发表于 2015-5-21 20:22
是的。
首先看你有没有硬件的i2c,有的话可以配置寄存器完成速率的选择。

我使用,用M4的库函数I2CMasterInitExpClk(I2C1_Base,40000000,false),完成传输速度的配置。请问,传输速度为100Kbps,时钟线对应的是100Khz?那么采样速率是100KHz吗?
 
 
 

回复

1144

帖子

17

TA的资源

纯净的硅(高级)

4
 
这个是指当为主控时的速率,接收时采用的中断,不超过最大速度都可以的
 
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

5
 
“采样速率”—— 谁知你要对什么采样呢?

点评

我配置成100kbps的传输速率,每秒传输100k个bit,这是不是相当于信号的采样速率呢  详情 回复 发表于 2015-5-22 09:46
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(中级)

6
 
仙猫 发表于 2015-5-22 09:16
“采样速率”—— 谁知你要对什么采样呢?

我配置成100kbps的传输速率,每秒传输100k个bit,这是不是相当于信号的采样速率呢

点评

如果说的是对I2C的SDA采样,确实采样速率=传输速率。 因一般对SDA的采样是由I2C控制器完成的,写应用程序时不需要关心它,所以顶楼贴也有可能被理解为将A/D变换的数据通过I2C传输,那样的话A/D采样速率和传输速率的  详情 回复 发表于 2015-5-22 10:15
 
 
 

回复

3138

帖子

0

TA的资源

裸片初长成(初级)

7
 
1301120345 发表于 2015-5-22 09:46
我配置成100kbps的传输速率,每秒传输100k个bit,这是不是相当于信号的采样速率呢

如果说的是对I2C的SDA采样,确实采样速率=传输速率。
因一般对SDA的采样是由I2C控制器完成的,写应用程序时不需要关心它,所以顶楼贴也有可能被理解为将A/D变换的数据通过I2C传输,那样的话A/D采样速率和传输速率的关系就另当别论了。

 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(中级)

8
 
I2C通讯速率和A/D采样率没有关系。如果要人为改变通讯速率,我以前试过把通讯设置到50k来提高可靠性,用I2CMasterInitExpClk(I2C1_Base,40000000,false)配置100k速率,如果要50k那么把其中的时钟频率x2揪成50k了

点评

恩,有收获。不过如果我写80000000,这在M4的这个函数会认为是系统时钟就是80000000,依照这个进行配置,传输速度也是100kbps.好几个系统时钟都可以得到100k的。 你既然用过,帮忙看下程序有啥大漏洞,发不过去啊  详情 回复 发表于 2015-5-23 08:43
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(中级)

9
 
mangoal 发表于 2015-5-22 22:27
I2C通讯速率和A/D采样率没有关系。如果要人为改变通讯速率,我以前试过把通讯设置到50k来提高可靠性,用I2CMasterInitExpClk(I2C1_Base,40000000,false)配置100k速率,如果要50k那么把其中的时钟频率x2揪成50k了

恩,有收获。不过如果我写80000000,这在M4的这个函数会认为是系统时钟就是80000000,依照这个进行配置,传输速度也是100kbps.好几个系统时钟都可以得到100k的。

你既然用过,帮忙看下程序有啥大漏洞,发不过去啊!!!

主机向外接I2C芯片DAC发送多个数据,突发方式:


SysCtlPeripheralEnable(SYSCTL_PERIPH_I2C1); //I2C1模块使能

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);

GPIOPinConfigure(GPIO_PG0_I2C1SCL);//时钟线和数据线配置

GPIOPinConfigure(GPIO_PG1_I2C1SDA);  

GPIOPinTypeI2C(GPIO_PORTG_BASE,  GPIO_PIN_1);

GPIOPinTypeI2CSCL(GPIO_PORTG_BASE, GPIO_PIN_0);

I2CMasterEnable(I2C1_BASE);//使能I2C主机模块

IntEnable(I2C_INT_MASTER);//历程好像都么有用中断,我只要通信就行,那种方式都可以,就先凑上了

I2CMasterIntEnable(I2C1_BASE);

IntMasterEnable();

I2CMasterInitExpClk(I2C1_BASE, 40000000,false);   //传输速度100kbps

I2CMasterSlaveAddrSet(I2C1_BASE,SLAVE_ADDRESS,false); //从机地址设置

I2CMasterDataPut(I2C1_BASE, WRITE_ADDRESS); //我向数模转换器件DAC里写数据,用指定写入地址吗?

I2CMasterControl(I2C1_BASE,I2C_MASTER_CMD_BURST_SEND_START);//发送一系列数据给DAC。

while(I2CMasterBusy(I2C1_BASE));

for(i = 0;i < DataNum;i++ )

       {

              I2CMasterDataPut(I2C1_BASE,DataTx);

              i== DataNum - 1 ?

              I2CMasterControl(I2C1_BASE,I2C_MASTER_CMD_BURST_SEND_FINISH):

              I2CMasterControl(I2C1_BASE,I2C_MASTER_CMD_BURST_SEND_CONT);



              while(I2CMasterBusy(I2C1_BASE));//到这主机一直忙,没法继续了。。。。。为什么啊

       }

 
 
 

回复

419

帖子

0

TA的资源

纯净的硅(中级)

10
 
I2C(Inter-Integrated Circuit)是一种用于芯片之间进行通信的串行总线。I2C总线的工作速率通常是可以调整的,常见的标准速率包括100kHz(模式1)和400kHz(模式2)。
 
 
 

回复

99

帖子

0

TA的资源

一粒金砂(中级)

11
 

首先看你有没有硬件的i2c,有的话可以配置寄存器完成速率的选择。

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表