利用stm32的两个引脚接收数据

现在在单片机上有两个引脚,一个是数据口,一个时钟口,怎么用stm32来读取上面的数据时钟大概是4us一个周期,数据是8位.,时钟的上升沿时获取数据引脚的一位数据.用spi... 现在在单片机上有两个引脚,一个是数据口,一个时钟口,怎么用stm32来读取上面的数据时钟大概是4us一个周期,数据是8位.,时钟的上升沿时获取数据引脚的一位数据.用spi协议可以接收吗?还是可以用外部中断检测?还是利用定时器接收??求高手解决啊~~
就是根据上面的时序图来接收数据,stm32是接收的
展开
 我来答
意法半导体(中国)投资有限公司 2023-06-12
展开全部
意法半导体致力于引领单片机技术和产品的创新,推动生态系统的建设,为用户提供满意的产品和技术服务。意法半导体单片机产品线拥有业界宽广、极具创新力的32位产品系列 – STM32,覆盖超低功耗、超高性能方向,同时兼具很强的市场竞争力。STM32是ARM Cortex内核单片机和微处理器市场和技术方面的佼佼者,目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超过1000个型号。STM32产品广泛应用于工业控制、消费电子、物联网、通讯设备、医疗服务、安防监控等应用领域,其优异的性能进一步推动了生活和产业智能…
qxwbio
2012-06-01 · TA获得超过119个赞
知道答主
回答量:87
采纳率:100%
帮助的人:46.9万
展开全部
同样感觉问题不大清楚,如果单片机上的那两个引脚的协议确定,那么就接到stm32上的相应外设引脚即可,然后设置下双方工作模式。如果确定是两根线,那么iic的可能性大一些(不过要查下iic的总线时序,看看是否与描述的一致),毕竟标准spi要miso,mosi,clk与cs四根线。其他的串行通讯暂时能想到的都是异步的了。如果协议不确定,只是想分析协议与数据,那么最好的方式是使用逻辑分析仪。
如果这种情况下仍然想要使用stm32来分析,只能使用io口中断或定时器捕捉模式来分析协议。如果只是只想要数据的话,可以用io中断,再每个单片机clk的上升沿触发中断,在isr中把另一个io口采集到的数据保存并移位(要注意msb在前还是lsb在前,spi是msb在前),采集完8个后处理。不过这样肯定会做累的半死。所有的时序,都要处理好了。还要考虑到各种出错的可能性。
当然如果后面的描述正确的话,可以尝试使用spi协议(spi规定是msb在前,要对应好了)但是需要单片机上一根额外的引脚作为片选接到stm32上,或者想其他办法把片选接上,stm32作为从机使用mosi线,,设置下相位和极性即可。
更多追问追答
追问
那我详细说明下吧,现在用stm32来接收单片机上的数据,对于那块单片机来说,我只有那2个引脚的资料,数据是从单片机上发出来的,stm32是负责接收,现在是确定用两个引脚,一个是clk,一个data,原来有程序是用spi来接收的,标准的spi是使用4根线,但是用spi的只接收模式,2根线也可以的.数据也是接收到的,但是数据不正确了,对了stm32的spi设置是从机模式.利用dma来读取数据的
现在我换了方案,用stm32来接收那些数据,但是怎么也接收不正确
追答
感觉对于这个问题,有两个问题需要解决,第一个个就是数据的起始位是哪个,这个一般在spi协议中用片选信号处理,即当cs片选拉低的时候就提示从机传输开始,然后根据相关的极性与相位设置来传输数据.如果单片机主站再启动后完成初始化就一直不停地发送数据,那么首先要确定的就是什么时候是一个字节传输的起始位,对于spi外设来说就必须要有cs片选,如果没有就要想办法确定,否则spi是没法工作的,毕竟spi本质上就是一个移位寄存器,理论上可以先传4bit,然后等半天在传后4bit.只要在一个cs片选有效周期内存在8个完整的clk脉冲就行,如果片选一直拉低,那么程序里也无法判断出什么时候是一个字节传输开始及结束,我们也就无法判断出到底采集到的数据时一个完整的字节,还是两个字节的部分拼接起来的.
要么就用io口中断模拟下时序,每个上升沿采集1bit.但是仍然要判断出什么时候是第一bit的数据.
当然如果发送数据不频繁倒是可以用延时或者定时器之类的处理下.
另一个问题是字节的传送顺序,这个好办,试下就行.

另外,上面的时序图如果是单片机主站的话,那么应该是out信号接到stm32上吧,如果是这样的话明显不是clk的上升沿锁存数据.倒像是在latch的上升沿锁存的输出数据,所以说感觉这个不像spi.
意法半导体(中国)投资有限公司
2023-06-12 广告
stm32怎么样?这个问题不能一概而论,要根据您的具体情况进行分析。意法半导体单片机产品线拥有业界很宽广、极具创新力的32位产品系列 – STM32,覆盖超低功耗、超高性能方向,同时兼具很强的市场竞争力。STM32是ARM Cortex内核... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
sinside8888
2012-05-30 · TA获得超过431个赞
知道小有建树答主
回答量:120
采纳率:0%
帮助的人:134万
展开全部
你的问题不是太清楚:
1. 是STM32要读取单片机上面的数据吗?可以使用很多协议,但是要先确定哪一方主动,如果是单片机主动发,那STM32最好用中断,单片机方根据需要或者定时发送;如果是STM32主动读,那STM32可以根据需要或者定时读,单片机则采用中断接收。只要双方匹配,根据你数据的实时程度,不难确定哪方主动。由于你只有两个口建议用I2C,SPI当然也可以,实现的方式可以手动模拟协议,也可以利用芯片内建的协议模块。

2. “时钟大概是4us一个周期,数据是8位.,时钟的上升沿时获取数据引脚的一位数据” 这个要求是单片机的要求还是STM32的要求?为什么会有这样的要求?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式