[讨论] 指定频率的正弦信号经过I2C传输,怎样保证频率不变

1301120345   2015-5-26 09:53 楼主
hello!我用MATLAB生成一个频率为2000Hz的正弦波序列。在M4上由I2C协议传给外接数模转换器。这个频率怎么考虑呢?怎么保证是2000Hz呢?

回复评论 (11)

DA转换速率必须严格与AD转换速率相等。
点赞  2015-5-26 11:26


我的正弦序列是利用MATLAB仿真得到的,不是实时采样。如果我在MATLAB上对正弦信号进行8000Hz采样,得到正弦序列,是不是我在将这个序列经过M4时,I2C的传输速率应该为8000Hz啊,或者说每秒8000*8bps啊?
点赞  2015-5-26 11:31
建议,你从低频率开始做实验,成功后,再逐步提高频率。
点赞  2015-5-26 11:42


不知道你的传输是否与DA转换同步,若不同步,传输速率必须大于8000*8bps,,且DA转换另设时钟。
点赞  2015-5-26 11:58


满足奈奎斯特抽样就差不多了,iic的速度得和采样速度匹配,才能完整把抽样信号送DA输出。如果不同的话,设置缓存试试。
点赞  2015-5-26 12:08


楼主每个采样点8位数据吗?iic每个时钟只能发送1bit数据哟。
点赞  2015-5-26 12:11
引用: ljj3166 发表于 2015-5-26 12:11
楼主每个采样点8位数据吗?iic每个时钟只能发送1bit数据哟。

我的序列是单字节的,每个数据8位。M4的I2C库函数传输参数不就是无符号整数嘛。只要给它就行,它在内部一位一位的传输的吧
点赞  2015-5-26 15:58
引用: ljj3166 发表于 2015-5-26 12:08
满足奈奎斯特抽样就差不多了,iic的速度得和采样速度匹配,才能完整把抽样信号送DA输出。如果不同的话,设置缓存试试。

恕我愚钝。M4主机和外接IIC芯片都配置传输速度100kbps,那个要传输的序列是在MATLAB上以采样率8000Hz已经处理好的数组。就是说在M4上是个纯数组。要做的就是传输者个数组。但现在用示波器观察波形不正确啊,不知道频率怎么保证啊。你说的匹配是怎么匹配,设置缓存,不怕您笑话,我不会啊
点赞  2015-5-26 16:06
什么芯片,
我想大概是这个思想
传数据,然后转换、间隔时间,传数据,转换
这样的话频率靠的是间隔时间来定吧
可以先看下ds再确定
点赞  2015-5-26 16:36
引用: motodefy 发表于 2015-5-26 16:36
什么芯片,
我想大概是这个思想
传数据,然后转换、间隔时间,传数据,转换
这样的话频率靠的是间隔时间来定吧
可以先看下ds再确定

M4C129和DAC芯片进行I2C通信。你看图,我是连续发送一个周期的,怎么断开了呢?
  • 正弦 (2).jpg
点赞  2015-5-26 20:50
引用: maychang 发表于 2015-5-26 11:58
不知道你的传输是否与DA转换同步,若不同步,传输速率必须大于8000*8bps,,且DA转换另设时钟。

你看我帖子回复楼下的那张图,不知道怎么回事,一个周期愣是给分成了两半。郁闷。是通信协议没写好吗???
点赞  2015-5-26 20:54
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复