hello!我用MATLAB生成一个频率为2000Hz的正弦波序列。在M4上由I2C协议传给外接数模转换器。这个频率怎么考虑呢?怎么保证是2000Hz呢?
我的正弦序列是利用MATLAB仿真得到的,不是实时采样。如果我在MATLAB上对正弦信号进行8000Hz采样,得到正弦序列,是不是我在将这个序列经过M4时,I2C的传输速率应该为8000Hz啊,或者说每秒8000*8bps啊?
建议,你从低频率开始做实验,成功后,再逐步提高频率。
不知道你的传输是否与DA转换同步,若不同步,传输速率必须大于8000*8bps,,且DA转换另设时钟。
满足奈奎斯特抽样就差不多了,iic的速度得和采样速度匹配,才能完整把抽样信号送DA输出。如果不同的话,设置缓存试试。
楼主每个采样点8位数据吗?iic每个时钟只能发送1bit数据哟。
我的序列是单字节的,每个数据8位。M4的I2C库函数传输参数不就是无符号整数嘛。只要给它就行,它在内部一位一位的传输的吧
恕我愚钝。M4主机和外接IIC芯片都配置传输速度100kbps,那个要传输的序列是在MATLAB上以采样率8000Hz已经处理好的数组。就是说在M4上是个纯数组。要做的就是传输者个数组。但现在用示波器观察波形不正确啊,不知道频率怎么保证啊。你说的匹配是怎么匹配,设置缓存,不怕您笑话,我不会啊
什么芯片,
我想大概是这个思想
传数据,然后转换、间隔时间,传数据,转换
这样的话频率靠的是间隔时间来定吧
可以先看下ds再确定
M4C129和DAC芯片进行I2C通信。你看图,我是连续发送一个周期的,怎么断开了呢?
你看我帖子回复楼下的那张图,不知道怎么回事,一个周期愣是给分成了两半。郁闷。是通信协议没写好吗???