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

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

[复制链接]
TLLED 发布时间:2019-2-21 10:47
# ^7 B  ^! O3 a- v
    测试STM8L050 SPI输出测试" [, J$ j; C2 D
     \- P8 ]9 f3 H8 A. p( r' @
    一、端口配置:$ |; E9 ^" O8 e$ i- s, ]& z
    % P9 G1 G' ?! U; s
    使用STM8CubeMX来查看SPI需要的引脚( W; O" \6 z& f: G
    1.png - J. p* h0 k  B
  : m7 l, M! o/ N2 a+ I6 v! Q
   二、程序部分
3 O* g6 r- b# {& C+ U6 ^1 _    " [, k) }. R7 e6 B* l
    2.1、SPI程序, T- X. l1 `! o) o# M1 p: b
  1. //spi.c6 M/ p* k5 D2 L# e
  2. #include "stm8l15x.h"
    9 t% X& K# z7 J4 E
  3. $ }* A9 S+ f/ f) M
  4. void SPI_FLASH_Init(void), [8 c# T7 v6 E1 \: W! P
  5. {
    3 ?: O/ }9 \( x
  6.   GPIO_Init(GPIOB, GPIO_Pin_6, GPIO_Mode_Out_PP_High_Fast);   //SPI_MOSI
    & J  w. b' L9 H
  7.   GPIO_Init(GPIOB, GPIO_Pin_7, GPIO_Mode_In_PU_No_IT);        //SPI_MISO
      X3 P/ f' [' {
  8.   GPIO_Init(GPIOB, GPIO_Pin_5, GPIO_Mode_Out_PP_High_Fast);   //SPI_SCK
    $ B; e1 V0 G* ^6 K5 ]# {
  9.   
    ! `; Q  A( K! M
  10.   CLK_PeripheralClockConfig(CLK_Peripheral_SPI1, ENABLE);
    ! V4 G  _: [0 n1 ^, ]1 e; B3 q
  11.   
    0 q- J. C/ ?5 q; X9 v8 ]
  12.   SPI_Init(SPI1, SPI_FirstBit_MSB, SPI_BaudRatePrescaler_4, SPI_Mode_Master,\$ m% C* p' P3 s+ S
  13.                  SPI_CPOL_High, SPI_CPHA_2Edge, \
    ' p; K) B7 w# ]4 |" Z! R
  14.                 SPI_Direction_2Lines_FullDuplex, SPI_NSS_Soft, 0x07);
    5 b* R4 C/ i0 G, w" P/ }2 ?
  15.         : y& y) E9 D0 Q0 Q
  16.   SPI_Cmd(SPI1, ENABLE);        /* 使能SPI */4 Z! F3 B( L- D* G
  17.         ) o/ G. I4 P2 k; Z
  18.         /* 配置CS管脚 */
    6 I7 l1 W/ _% \4 P
  19. //        GPIO_Init(SPI_CS , SPI_Pin_CS, GPIO_Mode_Out_PP_High_Fast);& s9 q5 A  p- X. C; b
  20. //        GPIO_WriteBit(SPI_CS, SPI_Pin_CS, SET);                /* 拉高不使能外部SPI设备 */
    ! z& \  B6 C  l% V8 C

  21. : ?" n: w" ^* [7 f9 W! I
  22. }
    & D: w" t- b% y4 h& g6 m

  23. / H( L/ S( _7 G* {" K5 a

  24. ( z2 n5 w" S9 w5 h9 V
  25. uint8_t SPI_FLASH_SendByte(u8 byte)! y% r' ]- Q6 j7 ?6 w1 Y
  26. {
    ; R7 P* N6 n, W' [+ c) Y; b& i
  27.   /* Loop while DR register in not emplty */
    7 b: s0 W- y$ c% V! [( F8 s
  28.   while (SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET);
    + k  O9 @7 t4 }
  29.   /* Send byte through the SPI1 peripheral */
    1 O0 s4 R3 Y) G1 p5 e% p0 q
  30.   SPI_SendData(SPI1, byte);. ?* ?" E2 X# o8 @# {
  31.   /* Wait to receive a byte */
    ! D5 l1 X7 j, W6 J5 Z1 X; C
  32.   while (SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE) == RESET);/ [5 m. r( x% H- |* q2 l
  33.   /* Return the byte read from the SPI bus */+ j5 h4 D4 x! G2 I- N) E
  34.   return SPI_ReceiveData(SPI1);         
    * i' d! U  T6 f$ b) ^+ {* V
  35. }
    $ }  }: W/ k* `
  36. //spi.h
    4 K. }8 _. e* H! i4 U7 e6 N6 [
  37. #ifndef __SPI_H
    ) [. k+ a3 B( L) G0 B# V4 F! h
  38. #define __SPI_H3 u1 @8 R) E, e1 t( s; o

  39. 9 ~7 ?# v: b) V" d% h1 J- x# ^
  40. void SPI_FLASH_Init(void);" j  z. P9 d  _- d3 O
  41. uint8_t SPI_FLASH_SendByte(u8 byte);  v) f& D" ]! \) d4 ^2 \. |3 n/ q

  42. 9 O0 g2 U& Y* W7 G" V
  43. #endif * c$ T. {# E& \$ H
复制代码
" G; f1 M3 L/ l# X! m+ b0 E
    2.2、主程序/ V4 r$ |0 b- h
  1. void main(void)
    ( o! q7 c. `. R8 b
  2. {% K. F1 _  T+ l/ Q6 `2 N: K: ~

  3. 5 P4 _1 s6 r, a6 n( u" D9 f  s
  4.   CLK_Config();           //时钟初始化1 q: ?4 {' T! Y& @. G0 ~) ]
  5.   
    & g* ?0 j, X0 b" f* k
  6.   Delay(0x2fffff);        //延时5S             6 g/ O; q" z6 N- u9 |# w
  7.   
    ) L0 D( Q4 W( L
  8.   //led_init();             //led初始化' g* @1 p2 _- i. t4 R' ?" v
  9.   //swim_init();
    ' S; J7 k: M% `2 `
  10.   uart_init_halfduplex();
    * T; T/ O4 i  l. t' u: q; T
  11.   : G8 H* X% f% a( w, H# f7 s+ p! b: a7 B
  12.   SPI_FLASH_Init();
    : W: C7 V  f$ _4 O+ k2 |
  13.   
    ' J) h' |# c$ @4 a
  14.   while (1)
    ' ?# ~8 Q$ `/ ?& E& [% {
  15.   {
    8 G6 G& t* D5 d- s, I
  16.    
    6 T: Z. G* _4 A
  17.     SPI_FLASH_SendByte(0x55);  s% A* z/ @, m2 W+ _
  18.     Delay(0xffff);, ?+ u  J1 e% ]7 b( S: b
  19.   }+ z6 f: L" G4 i* o3 F2 v
  20. }
复制代码
6 X+ Q  T! \8 N' A9 v8 M9 B( O
    三、执行结果! M$ A! c3 [0 s3 Z

3 @" ]* X- V: Z: T
8 U8 |+ i) r9 S
    手头上没有SPI通信的器件,使用示波器测试下,SPI_SCK和SPI_MOSI波形:
( b4 {3 M, p) e- k' [# m- |    黄色:SPI_SCK3 E( e3 s  ?3 k9 U) t8 b
    绿色:SPI_MOSI
; @7 z7 V) p# D2 k' Q    SPI发送的数据是0x55
' v& n4 y* H0 a  r! u    2.png
  _0 L; z- F  R5 i/ a. G( N; N, z) Y' _9 V5 S1 B

& D9 K3 u) E, }: c% W- P- |& L4 g6 L' U9 X. j: D1 c
2 V- K2 k! P* R3 n

" w: @; h+ E, [

2 [! W# ?5 @& ?/ @4 q& S
5 W' @% Q4 H* W/ c8 E9 `: t, @
1 D. N% D, o4 F
8 [% O1 u# d' s$ M; \
/ Z' h* h! T* s2 a9 N: K2 p, j

4 e: b6 r/ x) V. ~

/ R- b" \3 q  F% {) m; x
4 r  \  P( N. [5 G  o, H0 k! S( T6 a+ [% g
$ c7 [$ C5 W6 t; L( {7 O4 k
; \- t% X! {8 w' X; ]) K
5 C2 U8 g# W; {8 S8 \

' g! ^. u/ I; u2 `

" W, e$ @) h: a   / _; @1 \. F6 W: g
赞 收藏 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
, K+ a# z. n0 n2 P' {8 I' |: W1 U这软件很方便啊

- n* D9 d% L2 F0 nSTM8CubeMX不能生成代码      

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版