您说的<br />"书上的例子中每收发一个字节都是把SSEL激活一次的,比如<br />MSendData这个函数就是这样实现的.SSEL变低电平-->发送,接受1个字节-->SSEL变高电平"<br /><br />我不知道你说的MSendData()函数的SSEL激活是不是指IO0CLR = HC595CS,如果是的话,那我只能告诉你书上的解释是错的<br /><br />其实,IO0CLR = HC595CS并不是SPI的SSEL激活,注意到函数末尾的IO0SET = HC595CS了吗?<br />IO0CLR = HC595CS;<br />...<br />...<br />IO0SET = HC595CS;<br />这两条语句构成了一个上升沿.如果看下HC595的数据手册,你就会发现它是一个三级结构,第一级是移位,第二级是D触发器的锁存,第三级是输出使能<br />595需要两个时钟,一个是SRCLK,负责HC595移位用的,另一个是RCLK,负责将移位后的数据锁存入第二级D触发器,使之输出.<br />595的SRCLK即是SPI的SCK,而595的RCLK呢?就是IO0CLR = HC595CS,IO0SET = HC595CS这个上升沿了.<br />到此,您就会发现,IO0CLR = HC595CS并不是SPI的SSEL,而是在SPI的数据送入HC595的移位寄存器后给一个上升沿使之锁存<br /><br />不知道我这样的解释是否恰当.<br /><br />书上对IO0CLR = HC595CS的解释一直都有问题,在学校的时候曾向工程师提过.不过相信很快就能改过来的.请你们放心.
|