关于STM32并口驱动AD7768并通过USB3300上传到电脑的研究
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
提示:这里可以添加本文要记录的大概内容:
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。
提示:以下是本篇文章正文内容,下面案例可供参考
一、STM32可以并口驱动AD7768吗?
可以的只要有通过实验STM32F407,和stm32H743都时可以并口驱动AD7768,并不时网上的spi读取单通道,也不是FPGA来驱动,目前可以达到8通道128K采样速率并上传到电脑
二、使用步骤
1.数据采集
将要想使用stm32驱动AD7768可以利用stm32的DCMI,实验证明行的通,stm32H743可以达到256K采样
2.数据上传
stm32只采集ad7768的数据是不够的,还需要将数据转换下格式,因为输出的数据和实际数据之间需要进行wei转换,转换后将数据打包发送到电脑端,用stm32自身的虚拟串口无法发送如此大的数据量(128K输出数据情况下,4Mbyte/s)所以选择外接USB PHY芯片usb3300,
目前实现8通道128K数据输出速率并上传到电脑,8通道256K数据输出率还未实现(8Mbyte/s),但如果采集8通道,传输4通道数据在256K的采样率应该可以,实际测试USB3300可以上传数据4.5Mbyte/s,目前测试平台是stm32H743+USB3300+AD7768都是开发板,后期将所有器件放到一个板子上因该速度还能再快点
总结实际
提示:这里对文章进行总结:
所有AD7768相似时序的芯片应该都可以用stm32的dcmi驱动。
关于上面的思路后来又进行了详细的测试,发现stm32用dcmi是可以驱动AD7768芯片,但是同时驱动USB3300是有问题的。
两个芯片同时接入stm32中会发现上传的数据包有丢失的问题,验证方法,stm32收到ad7768中断后不对数据进行处理,而是将数据包中用一个累加变量来代替,结果电脑上绘制的斜线有阶跃,问题出现的原因分析,是USB3300输出频60MHZ的clk,而ad7768输出8M的CLK,而且两个芯片都是以自身的频率来控制stm32的外设,任何一个中断都会打断,另一个外设的传输数据过程,造成传输错误,在实验过程中,发现如果USB发送数据过程中也会导致AD7768接收数据错位,所以stm32 用dcmi外设可以驱动ad7768,但不能同时驱动usb3300,我看网上有人说用st32的内部lwip和usb3300同时工作也会有数据丢失问题,估计和这个问题是同一个原因,就是发数据过程中有中断发生
作者:为谁唱歌