飞思卡尔两个单片机如何进行SPI通信

飞思卡尔两个单片机如何进行SPI通信,第1张

飞思卡尔S12系列的单片机基本上都有SPI接口,而且一般可以切换复用的,比如XS128就可以用PS4-7或者PM口进行通信,2个单片机进行SPI通信的时候,普通模式下需要4个线,即:SS,CLK,MISO,MOSI,接线的时候记得设置主从关系,然后的交叉MOSI和MISO即可

LDX 70H,X ; H:X=(0F00H),(0070H)=(0FH)
说明:LDX 70H,X 指令将将内存地址为 70H 和 71H 的两个字节中的值作为 X 寄存器的初始值,因此,X=0F00H,(0070H)=0FH。

PSHX ; H:X=(0F00H), SP=(00FDH), (SP)=00H
说明:PSHX 指令将 X 寄存器的值压入堆栈中,同时 SP 寄存器减 2,因此,SP=00FDH,(SP)=0FH。

STA 70H ; (0070H)=0FFH, A=0FFH
说明:STA 70H 指令将 A 寄存器中的值 0FFH 存储到内存地址 70H 中,因此,(0070H)=0FFH,A=0FFH。

PULA ; A=0FH, SP=00FFH
说明:PULA 指令将堆栈中的值d出到 A 寄存器中,同时 SP 寄存器加 2,因此,A=0FH,SP=00FFH。在执行 PULA 指令后,堆栈中原来的值已经被d出,堆栈中不再有值。

以下是更详细的步骤说明:

初始状态:

SP = 00FFH ; 栈顶指针初始化为 00FFH
A = 0FFH ; 寄存器 A 初始化为 0FFH
H:X = 0000H ; 寄存器 H:X 初始化为 0000H
(0070H) = 0FH ; 内存地址 0070H 中的值为 0FH

执行指令 "LDX 70H,X":

LDX 70H,X ; 将内存地址 70H 和 71H 中的值 0FH 和 00H 组成的字作为 X 寄存器的初始值
; 因此 X = 0F00H,(0070H) = 0FH

执行指令 "PSHX":

PSHX ; 将 X 寄存器的值 0F00H 压入堆栈中
; SP = 00FDH,(00FDH) = 00H,(00FEH) = 0FH

执行指令 "STA 70H":

STA 70H ; 将 A 寄存器的值 0FFH 存储到内存地址 70H 中
; (0070H) = 0FFH,A = 0FFH

执行指令 "PULA":

PULA ; 将堆栈中的值d出到 A 寄存器中
; SP = 00FFH,A = 0FH

最终状态:

SP = 00FFH      ; 堆栈指针指向空闲位置

A = 0FH         ; 寄存器 A 中的值为 0FH

H:X = 0F00H     ; 寄存器 H:X 中的值为 0F00H

(0070H) = 0FFH  ; 内存地址 0070H 中的值为 0FFH

将硬件连接好。
打开安装文件夹,找到Prog文件夹下的hiwaveexe。
双击打开hiwave,你看就和你平时下程序的界面一样了吧。
选择Component菜单下的Set Connection,按照你的硬件一步一步设定好连接。
最后选择Connection菜单下的Load,打开选择文件对话框,把文件类型选择为S19文件,定向到你的的S19文件,打开即能下载。

PS:其实我觉得最好还是写一个通过串口或者是CAN在线下载的Bootlader,方便程序的下载和以后的软件升级。

硬件上需要车模、
电源管理电路、飞思卡尔单片机、检测电路(针对不同的要求传感器不同,如线圈--电磁、红外对射--光电、ccd--摄像头)
软件上需要Freescale
CodeWarrior编辑器再加上你写的程序。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13160199.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-13
下一篇 2023-06-13

发表评论

登录后才能评论

评论列表(0条)

保存