打印

程序执行流程问题

[复制链接]
730|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
在用飞思卡尔9S12单片机 给74hc595 通信 用硬件spi 可是写完后 用示波器看到的波形跟软件写的不太一样;
程序:

按程序的流程DO_595_LATCH初始化为高(Dio_init()),DO_595_LATCH 拉低 然后spi函数开始发送,发送函数执行完后(此时DO_595_LATCH还是低)DO_595_LATCH拉高;
示波器抓到的(为了看清楚就上电执行一次):
(红色:clk 蓝色:data 黄色:latch)
波形上看到latch拉低后马上又拉高了,不想预想的一样在spi发送过程中拉低发送结束后拉高,这是怎么一回事?感觉IO口拉latch口 跟spi发送不是按照程序执行的顺序执行的;


相关帖子

沙发
694844985| | 2017-8-20 21:34 | 只看该作者
速度放慢点再测测

使用特权

评论回复
板凳
wlhooops|  楼主 | 2017-8-20 22:30 | 只看该作者
694844985 发表于 2017-8-20 21:34
速度放慢点再测测

总线时钟放慢点??

使用特权

评论回复
地板
feelhyq| | 2017-8-20 22:43 | 只看该作者
Spi0_Send_Byte(0x01)这个函数执行完后,判断下SPI是不是出于Busy状态,在不是Busy状态下再拉高latch.

使用特权

评论回复
5
feelhyq| | 2017-8-20 22:45 | 只看该作者
很有可能是数据仅仅扔到 SPI的数据寄存器里面去了,然后这个函数执行完了。但此时数据还没有完全发送出去,需要通过移位寄存器一位一位的发送出去。要判断数据是否全部发送出去了,应该判断下SPI是不是处于忙状态。

使用特权

评论回复
6
wlhooops|  楼主 | 2017-8-20 23:01 | 只看该作者
feelhyq 发表于 2017-8-20 22:45
很有可能是数据仅仅扔到 SPI的数据寄存器里面去了,然后这个函数执行完了。但此时数据还没有完全发送出去, ...

很有道理~等下去试一下~

使用特权

评论回复
7
feelhyq| | 2017-8-20 23:02 | 只看该作者
wlhooops 发表于 2017-8-20 23:01
很有道理~等下去试一下~

这么晚还在学习,精神可嘉

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

90

帖子

1

粉丝