请选择 进入手机版 | 继续访问电脑版

你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

AT89C205l单片机模拟SPI总线操作串行EEPROM 93CA6

[复制链接]
gaosmile 发布时间:2020-8-14 21:51
SPI(Serial Peripheral Interfacer 串行外设接口)是摩托罗拉公司推出的一种同步串行通讯接口,用于微处理器臌控制器和外围扩展芯片之间的串行连接,现已发展成为一种工业标准,目前,各半导体公司推出了大量的带有SPI接口的具有各种各样功能的芯片,如RAM,EEPROM,FlashROM,A/D转换器、D/A转换器、LED/LED显示驱动器、I/O接口芯片、实时时钟、UART收发器等等,为用户的外围扩展提供了极其灵活而价廉的选择。由于SPI总线接口只占用微处理器四个I/O口线,采用SPI总线接口可以简化电路没计,节省很多常规电路中的接口器件和I/O口线,提高设计的可靠性。& G, C0 H7 _. x- y, f. Q

/ u$ Y3 N/ y- t0 _" \现以 AT89C205l单片机模拟SPI总线操作串行EEPROM 93CA6为例,如图1所示,介绍利用单片机的I/O口通过软件模拟SPI总线的实现方法。在这里,仅介绍读命令的时序和应用子程序。
, }  C4 P% ?$ k6 {" Z3 V" | 微信图片_20200814214956.png " L" v. F2 c, Y6 }
93C46存储器SPI总线的工作原理
9 S; j, n, E- h% n: H( w. H) Q; D5 O! i, U8 C. B# _9 ]
93CA6作为从设备,其SPI接口使用4条I/O口线:串行时钟线(SK)、输出数据线DO、输入数据线DI和高电平有效的从机选择线CS。其数据的传输格式是高位(MSB)在前,低位(LsB)在后。93C46的SPI总线接口读命令时序如图2所示。1 {5 V3 o) @7 j$ M1 x* Y) v
微信图片_20200814214959.png 8 e6 X( L* t5 i4 S
软件模拟SPI接口的实现方法
% E; ?2 d% `. Y' P3 n2 G% ]4 g. m5 z7 {
对于不带SPI串行总线接口的AT89C2051单片 机来说,可以使用软件来模拟SPI的操作,图1所示 为AT89C2051单片机与串行EEPROM 93C46的硬件 连接图,其中,P1.0模拟SPI主设备的数据输出端 SDO,P1.2模拟SPI的时钟输出端SCK,P1.3模拟 SPI的从机选择端SCS,P1.1模拟SPI的数据输入 SDI。- b. {8 J4 w8 o$ v0 J; R
  D' k+ z# k* q- Y
上电复位后首先先将P1.2(SCK)的初始状态设置为0(空闲状态)。( A% W% }% p4 M8 @# P
  x; v) g& W! m. ], U
读操作:AT89C2051首先通过P1.0口发送1位起始位(1),2位操作码(10),6位被读的数据地址(A5A4A3A2A1A0),然后通过P1.1口读1位空位(0),之后再读l6位数据(高位在前)。
! j1 _% a# d' }5 Y' _$ ?' N9 K. J
2 T' V0 X2 E) V, Y7 l* e9 C; |
写操作:AT89C2051首先通过P1.0口发送1位起始位(1),2位操作码(01),6位被写的数据地址(A5A4A3A2A1A0),之后通过P1.0口发送被写的l6位数据(高位在前),写操作之前要发送写允许命令,写之后要发送写禁止命令。2 R% D8 O9 }9 H5 d5 {/ K" c
# c5 R/ ~# m$ \+ u( j( j
写允许操作(WEN)):写操作首先发送1位起始位(1),2位操作码(00),6位数据(11XXXX)。              写禁止操作(WDS)):写操作首先发送1位起始位(1),2位操作码(00),6位数据(00XXXX)。  E/ {* u6 ~' q
下面介绍用C51模拟SPI的子程序。
9 v, J" W  \+ N! m

  1. 8 I7 \/ J7 _& P: E" L" J& E
  2. 1. //首先定义好I/O口  
    $ [) p* M% l/ Y4 A
  3. 2. sbit SDO=P1^0;8 W5 N8 a6 v! o0 O2 q8 _" R% F1 M
  4. 3. sbit SDI=P1^1;
    * O5 k2 h( y! m  Q2 P1 t' H
  5. 4. sbit SCK=P1^ 2;# ?" X1 w" r+ n
  6. 5. sbit SCS=P1^3;
    : X7 }4 g: |4 `. `2 r1 k8 l
  7. 6. sbit ACC_7= ACC^7;0 d1 P$ w% a# H- a6 i3 h1 ^$ b4 u
  8. 7. unsigned int SpiRead(unsigned char add)  ! v9 ^& Y& m. ~( g" F0 f4 }1 m4 W
  9. 8. {  2 }7 Q3 ~' z, _9 w8 v1 a
  10. 9.     unsigned char i;8 y3 V8 U0 Q( Q: W6 D* ^
  11. 10.     unsigned int datal6;' u, E# n) H8 }
  12. 11.     add&=0x3f;/*6位地址*/  : O3 M; C; ~5 g& _
  13. 12.     add |=0x80;/*读操作码l0*/  
    & J  z- V" g, p+ C0 i
  14. 13.     SDO=1;/*发送1为起始位*/    J" n: `$ ~$ w
  15. 14.     SCK=0;. i3 z3 W. ?9 H0 h8 A! H
  16. 15.     SCK=1;
    " u; f7 O; u( P9 T& F" @
  17. 16.     for(i=0;<8;i++)/*发送操作码和地址*/  ( j' g& `7 n, U: R/ m* A. V
  18. 17.     {  
    & a7 a# s6 }: f
  19. 18.         if(add&0x80==1)  
    ) F' R" j3 V' |
  20. 19.             SDO=1;
    & n& x% x$ q9 s$ l7 p0 c: p8 Y
  21. 20.         else   8 `# z* @6 ]0 {0 V! k+ b- Q
  22. 21.             SDO=0;- r2 `8 I$ `$ ]
  23. 22.         SCK=0;/*从设备上升沿接收数据*/  
    . x1 l+ o# h, r7 O( G1 Q
  24. 23.         SCK=1;; Q$ P  y, V7 c+ Q2 a
  25. 24.         add<<= 1;! D/ O6 C  T4 x9 t  d
  26. 25.     }  4 i$ m; p4 F& {
  27. 26.     SCK=1;/*从设备时钟线下降沿后发送数据,空读1位数据*/  
    9 L* X3 e$ q1 k% P- t# O# C. o6 ~4 g
  28. 27.     SCK=0;! D! O# a3 \$ l9 g
  29. 28.     datal6<<= 1;/*读16位数据*/  
    8 c" h0 ?. L+ ?8 i2 f3 L
  30. 29.     for(i=0;<16;i++)  ! {* W# M5 P: w/ i( A* a
  31. 30.     {  
    ) e! K' a0 Y7 ?
  32. 31.         SCK= 1;
    ; o5 T" ~& H3 }
  33. 32.         _nop_();5 H3 T- ]  f: \, q0 X6 P) i8 B: @
  34. 33.         if(SDI==1)  5 G8 j: ~7 `6 s! [: u
  35. 34.             datal6|=0x01;
    ' R3 `; n* c1 X
  36. 35.         SCK =0;9 B; \7 ]$ n& m! d3 O
  37. 36.         datal6< < =1;3 a& h2 K9 n) O
  38. 37.     }  $ x3 {2 t( `: N! D" _
  39. 38.     return datal6;
    2 I  o- V  r# [& @
  40. 39. }
复制代码
# a" `7 M, Z( I9 x2 ]/ \0 P
对于不同的串行接口外围芯片,它们的时钟时序是不同的。上述子程序是针对在SCK的上升沿输入(接收)数据和在下降沿输出(发送)数据的器件。这些子程序也适用于在串行时钟)的上升沿输入和下降沿输出的其它各种串行外围接口芯片,只要在程序中改变P1.2(SCK)的输出电平顺序进行相应调整即可。
收藏 评论0 发布时间:2020-8-14 21:51

举报

0个回答
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版