程序执行流程问题

[复制链接]
1161|6
 楼主| wlhooops 发表于 2017-8-20 16:10 | 显示全部楼层 |阅读模式
在用飞思卡尔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.
feelhyq 发表于 2017-8-20 22:45 | 显示全部楼层
很有可能是数据仅仅扔到 SPI的数据寄存器里面去了,然后这个函数执行完了。但此时数据还没有完全发送出去,需要通过移位寄存器一位一位的发送出去。要判断数据是否全部发送出去了,应该判断下SPI是不是处于忙状态。
 楼主| wlhooops 发表于 2017-8-20 23:01 | 显示全部楼层
feelhyq 发表于 2017-8-20 22:45
很有可能是数据仅仅扔到 SPI的数据寄存器里面去了,然后这个函数执行完了。但此时数据还没有完全发送出去, ...

很有道理~等下去试一下~
feelhyq 发表于 2017-8-20 23:02 | 显示全部楼层
wlhooops 发表于 2017-8-20 23:01
很有道理~等下去试一下~

这么晚还在学习,精神可嘉
您需要登录后才可以回帖 登录 | 注册

本版积分规则

15

主题

90

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部