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

STM8-SO8-DISCO -- 11、STM8L050 SPI输出测试

[复制链接]
TLLED 发布时间:2019-2-21 10:47

3 [7 e* _: ?1 P9 W. {. Z    测试STM8L050 SPI输出测试
# Z1 S$ s+ C0 K! _1 r! u& V7 T4 ]   5 ?+ {+ I* c- a0 s
    一、端口配置:
  d- E# f- g; z* l    % F' y% `) s, h! m, s' H
    使用STM8CubeMX来查看SPI需要的引脚
7 c$ r. X6 |7 T. c    1.png " Q- _# c( M8 b7 ?. z" U# ^
  , s% h8 A  Q; r7 D; p; y( O/ {
   二、程序部分; y- E- y2 C6 R4 @4 m$ D# O* x9 E
   
0 C9 N5 u% z1 L. l    2.1、SPI程序
9 g& m/ V( I5 t1 i
  1. //spi.c9 z# Z0 T0 K3 O; A7 R( [
  2. #include "stm8l15x.h"$ G; f9 `2 B0 {- Y, p4 c
  3. ! p/ Z7 L: ]7 f  Q( M- D% u7 L5 W
  4. void SPI_FLASH_Init(void)
    / `0 v5 O. S2 ]8 X$ B
  5. { 9 n" W; c5 Q9 D! S
  6.   GPIO_Init(GPIOB, GPIO_Pin_6, GPIO_Mode_Out_PP_High_Fast);   //SPI_MOSI* b& s* D: h  o4 M: V
  7.   GPIO_Init(GPIOB, GPIO_Pin_7, GPIO_Mode_In_PU_No_IT);        //SPI_MISO* J3 M$ i: g) ?; N6 @
  8.   GPIO_Init(GPIOB, GPIO_Pin_5, GPIO_Mode_Out_PP_High_Fast);   //SPI_SCK2 p! M1 Z( E! q' f5 Z
  9.   - `7 P1 u5 g( b% L. j% {6 e
  10.   CLK_PeripheralClockConfig(CLK_Peripheral_SPI1, ENABLE);
    ! K: d. q" P% b( r* S
  11.   
    / h( E+ w6 w& K' n
  12.   SPI_Init(SPI1, SPI_FirstBit_MSB, SPI_BaudRatePrescaler_4, SPI_Mode_Master,\
    ; t" B+ }' ]. f( W5 R' ]
  13.                  SPI_CPOL_High, SPI_CPHA_2Edge, \8 U$ x: |  I: A0 U7 ]5 i- K
  14.                 SPI_Direction_2Lines_FullDuplex, SPI_NSS_Soft, 0x07);
    . ~. d: Z0 v) s# S- ~2 G
  15.         ) J7 q9 @; _5 r# c$ f
  16.   SPI_Cmd(SPI1, ENABLE);        /* 使能SPI */  n6 R2 g" P. A& R, [9 B  ?5 @
  17.         ! x4 s: P- C( @7 a5 E
  18.         /* 配置CS管脚 */3 a* S( |2 Y. B/ Q, B- _% f' T3 q
  19. //        GPIO_Init(SPI_CS , SPI_Pin_CS, GPIO_Mode_Out_PP_High_Fast);
      s8 D. u, h! |9 @- z" ~/ x0 g
  20. //        GPIO_WriteBit(SPI_CS, SPI_Pin_CS, SET);                /* 拉高不使能外部SPI设备 */
    ' w+ H: W$ f; U1 ^7 s* [

  21. 6 l% a- t& s$ Z. _. ?
  22. }; D; Y6 ]8 d2 D

  23. ! Y- f& s; J6 Z; I! Q+ o) u+ s7 t

  24. # m; a2 K. X- q3 F5 K* \1 v- r
  25. uint8_t SPI_FLASH_SendByte(u8 byte)$ F3 s) i3 |3 ?: H& [
  26. {4 X! V& b9 v8 D$ M8 F0 W
  27.   /* Loop while DR register in not emplty */
    % B- b- D$ m) I9 G6 i  E) c4 H0 h1 U- L
  28.   while (SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET);
    : w! I2 E/ J* Q; t
  29.   /* Send byte through the SPI1 peripheral */3 }1 V* Z* f% R' ?( x& F6 w
  30.   SPI_SendData(SPI1, byte);$ V8 A5 j, K1 m/ Z" u% f1 m7 s
  31.   /* Wait to receive a byte */
    & N/ i' S* n1 z8 r; a5 |/ e
  32.   while (SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE) == RESET);
    ( J# D0 s2 M* {6 R4 C$ @* m
  33.   /* Return the byte read from the SPI bus */: k+ f* S( n  W" g: r
  34.   return SPI_ReceiveData(SPI1);         - c( i* r8 I4 e% d
  35. }# ?# E& I( a2 @, ^5 X% c9 p
  36. //spi.h+ \: {" M- ?  T8 g
  37. #ifndef __SPI_H. T" u* e3 K2 j5 O1 J* {. }( i0 P) l4 V
  38. #define __SPI_H
    ) v& y- u& N3 T+ c3 m$ _

  39.   V$ n& T' {, p3 U! ~4 j$ k# X- T2 R
  40. void SPI_FLASH_Init(void);! _: u! h7 Z2 d3 c. f; s1 G
  41. uint8_t SPI_FLASH_SendByte(u8 byte);
    7 o1 A/ b3 G3 r. f! r

  42. ; E' O9 n& V4 {! H
  43. #endif & L! t  A: F$ \: L, ]) x
复制代码
. q8 N( r+ A& L& a' d
    2.2、主程序
! |, \* Y' P) D# @8 V
  1. void main(void)
    & x; U$ y0 R9 d
  2. {
    & j5 N* X; V6 _7 ~  i' n6 s- w& v' J
  3. 1 E% l1 ]5 O1 A& j
  4.   CLK_Config();           //时钟初始化
    , l1 K6 C; `! O) p
  5.   
      ~7 g. S" k- l( \* {' s9 @& c6 O
  6.   Delay(0x2fffff);        //延时5S             7 Q! f2 m$ a; E3 b: ]: b
  7.   / G  {/ r$ `+ d5 r. h( }& q# u
  8.   //led_init();             //led初始化0 N9 |$ @; V0 U  B0 t' u8 \; n6 I
  9.   //swim_init();$ {5 I( w1 R* `
  10.   uart_init_halfduplex();
    : E" `1 z. o4 ]8 o6 i
  11.   5 K3 S; G1 L* t9 c
  12.   SPI_FLASH_Init();
    ; R0 i" [: N6 R# p: D# P
  13.   ; A* \. R# f2 X
  14.   while (1)
    0 E: n7 F9 H  i# l' p
  15.   {
    ! A2 k, y' w* i2 z
  16.    
    ! G. @. f4 j; g
  17.     SPI_FLASH_SendByte(0x55);! Z# ]) F2 r% ]5 J
  18.     Delay(0xffff);
    * ~3 E) L; z7 r5 q
  19.   }+ h9 @, \7 i+ P; b+ G) w  [
  20. }
复制代码
9 P7 [9 [/ F; m" z0 B! _9 m
    三、执行结果6 o: B& p: L6 P- ?+ I
1 f. j4 L$ [( E9 H3 r: n' r
& ]) ~* Z+ y9 i2 @: d9 H
    手头上没有SPI通信的器件,使用示波器测试下,SPI_SCK和SPI_MOSI波形:/ Z. W4 A0 G& ?$ S8 _6 s7 R
    黄色:SPI_SCK( D/ c# z& a" K5 `* ?  t
    绿色:SPI_MOSI
2 D- _& g1 c# D. `0 \4 _: F& P    SPI发送的数据是0x554 {2 H% n& r) s. ~8 B
    2.png
* D. [+ K5 W- h: U1 ?
. K7 x# @, Y5 S2 l. E- s# z5 C

. V3 A6 F& g. h" ~- |
; l6 q: X5 e8 R0 u; e: s3 c
/ w1 p$ X# K! g5 ]

' i( ?! |$ L6 @4 @  I
: N, ?8 A* c6 J

" L9 n' y1 E  ^7 C( l# L; p
9 V/ S# Z7 i, B# K- ?' D

, K8 n6 o) \( [' s

# B& S& W! m0 s, A8 s, g
4 O0 j+ `! f. Y" o. f

& ~: t9 f  V$ V/ X" h
& m8 I: C* O8 O1 {+ C  ~8 y( T6 e7 p

" }+ a: [2 c9 b; n" C$ E! e' o2 P/ I4 c7 ^6 c! l, n

* ~5 t, R. U, n: U5 a! k; M" J2 K) Z4 w( Q0 _% }

; f, g- s) K$ a; q6 u% ?" |   
% Z8 h: w0 S% g3 n
收藏 1 评论2 发布时间:2019-2-21 10:47

举报

2个回答
仙景 回答时间:2019-2-21 13:39:51
这软件很方便啊
TLLED 回答时间:2019-2-21 13:44:54
liu553824989 发表于 2019-2-21 13:39
: |! J, h4 A( d1 M0 B8 L这软件很方便啊

2 l+ e: l  w4 t$ q  XSTM8CubeMX不能生成代码      
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版