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

2024-12-01 01:42:52
推荐回答(2个)
回答(1):

同样感觉问题不大清楚,如果单片机上的那两个引脚的协议确定,那么就接到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线,,设置下相位和极性即可。

回答(2):

你的问题不是太清楚:
1. 是STM32要读取单片机上面的数据吗?可以使用很多协议,但是要先确定哪一方主动,如果是单片机主动发,那STM32最好用中断,单片机方根据需要或者定时发送;如果是STM32主动读,那STM32可以根据需要或者定时读,单片机则采用中断接收。只要双方匹配,根据你数据的实时程度,不难确定哪方主动。由于你只有两个口建议用I2C,SPI当然也可以,实现的方式可以手动模拟协议,也可以利用芯片内建的协议模块。

2. “时钟大概是4us一个周期,数据是8位.,时钟的上升沿时获取数据引脚的一位数据” 这个要求是单片机的要求还是STM32的要求?为什么会有这样的要求?