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

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

[复制链接]
TLLED 发布时间:2019-2-21 10:47
3 k7 w0 j: }6 a
    测试STM8L050 SPI输出测试6 r& f' J7 ^3 C& M# P$ @* }/ s
   ; E4 }4 D( R1 }1 J* \
    一、端口配置:  I( P& e! k& }+ }9 N/ E( E
   
' V( X4 l$ Z5 g& l2 {; p    使用STM8CubeMX来查看SPI需要的引脚
( j# Y# f' g5 M    1.png ! v1 l$ F! B' L1 `  H7 m) z$ [
  2 ~9 J# r8 q* ^2 j* S# P. e
   二、程序部分
6 H) |# j* O1 h: U3 V. ~, K+ l    , Z' I8 K9 `1 ~1 c
    2.1、SPI程序
" ]+ ?9 w, H# b6 G9 U2 b
  1. //spi.c
    ; y- w: |" w+ ~( @7 ^
  2. #include "stm8l15x.h"
    6 z! h; i/ Y( F: E! R6 \
  3. - |# a8 B1 x0 a: ~7 }
  4. void SPI_FLASH_Init(void)
    ! b) O# \. p+ A
  5. { . d/ \* x* v  u& }
  6.   GPIO_Init(GPIOB, GPIO_Pin_6, GPIO_Mode_Out_PP_High_Fast);   //SPI_MOSI
    9 i$ D$ L  }5 s: b2 @) F7 H
  7.   GPIO_Init(GPIOB, GPIO_Pin_7, GPIO_Mode_In_PU_No_IT);        //SPI_MISO
      E0 x5 a: h+ G* H
  8.   GPIO_Init(GPIOB, GPIO_Pin_5, GPIO_Mode_Out_PP_High_Fast);   //SPI_SCK
    # u1 @& I- B3 W  _
  9.   ( M  M/ B; S- ~5 }/ m& n4 Q
  10.   CLK_PeripheralClockConfig(CLK_Peripheral_SPI1, ENABLE);# I: d: U" V, N, V* \
  11.   + n4 g, |9 ^) h" t5 v
  12.   SPI_Init(SPI1, SPI_FirstBit_MSB, SPI_BaudRatePrescaler_4, SPI_Mode_Master,\
    " \9 {/ a  U7 J# {8 Y' F
  13.                  SPI_CPOL_High, SPI_CPHA_2Edge, \
    3 I# U2 q! Q' {( T* n8 E- W+ \
  14.                 SPI_Direction_2Lines_FullDuplex, SPI_NSS_Soft, 0x07);6 O& p, ^! X6 I
  15.        
    8 m. j: r+ d* G) C) K1 E, p6 N9 u
  16.   SPI_Cmd(SPI1, ENABLE);        /* 使能SPI */
    + }8 |0 X* F( R+ ?7 @  v3 p
  17.         , z7 ^$ k- O. q% C1 m" l9 @8 `
  18.         /* 配置CS管脚 */
    ! H' A* n3 e% P  {3 Q' T
  19. //        GPIO_Init(SPI_CS , SPI_Pin_CS, GPIO_Mode_Out_PP_High_Fast);
    ( `) k' D- R4 ~; Z% p9 r
  20. //        GPIO_WriteBit(SPI_CS, SPI_Pin_CS, SET);                /* 拉高不使能外部SPI设备 */
    5 D" h3 K% Q: s4 T

  21. - p% k. ~/ B: C5 Z+ t7 [
  22. }' J5 M% K. P7 E1 r
  23. " T5 v. ^9 M! [- ^4 Y6 ?

  24. + n$ D# A6 R8 U0 U/ X7 H% e4 q
  25. uint8_t SPI_FLASH_SendByte(u8 byte). I* m" N; i6 F
  26. {7 Q# d$ \! O! w! L
  27.   /* Loop while DR register in not emplty */
    0 u% s( \6 @: K4 x
  28.   while (SPI_GetFlagStatus(SPI1, SPI_FLAG_TXE) == RESET);' B2 S) B+ }, G9 W
  29.   /* Send byte through the SPI1 peripheral */
    ( ^- i8 J# z7 `/ Z: b; {! Y
  30.   SPI_SendData(SPI1, byte);
    + Q, \8 B; q+ p4 [5 Y& `/ z) `; a
  31.   /* Wait to receive a byte */
    1 }1 i2 \- e! k/ \7 ~
  32.   while (SPI_GetFlagStatus(SPI1, SPI_FLAG_RXNE) == RESET);1 }2 d; O7 S) a; t; c
  33.   /* Return the byte read from the SPI bus */
    . }! n) J& f* r) X0 Q
  34.   return SPI_ReceiveData(SPI1);         / f' a2 k8 \2 w! C( |, c+ A
  35. }/ B6 ]& j# t" p9 n
  36. //spi.h, y5 e2 c5 w$ h; R& B, d% r
  37. #ifndef __SPI_H0 W0 W) X1 @5 w/ \+ t
  38. #define __SPI_H6 _5 h# D* P3 X* Q4 ~" L! k, g9 Q
  39. # R3 L4 l5 v! k! N! O7 S) r- M% B
  40. void SPI_FLASH_Init(void);3 S4 X: v% ~0 }- I
  41. uint8_t SPI_FLASH_SendByte(u8 byte);8 R7 z0 [$ |1 ~6 a; ?9 o, h
  42. ' d8 x0 w* H# D( q
  43. #endif , K; z; H4 K( X4 X1 G) |6 t9 a
复制代码
" A: D1 H  d: C" @
    2.2、主程序
  s0 |! [5 i/ D" a
  1. void main(void)
    , Q" S& w0 r$ j5 M. d3 Q/ C8 C
  2. {
    7 N! d6 X- ]) Y! x& f. m) o

  3. 3 ], a# Q( g0 I; q
  4.   CLK_Config();           //时钟初始化
    3 {3 g! ?4 B9 {5 d/ H3 b+ R
  5.   
    # l# R6 u+ k/ I% D) b
  6.   Delay(0x2fffff);        //延时5S            
    . n8 F( m  X! R, ~
  7.   
    % D  F! C) ?5 F$ p% t+ {1 i1 Y. M
  8.   //led_init();             //led初始化
    ' D8 [2 P. E/ L% n% {& W0 m0 T
  9.   //swim_init();
    0 B! g' }7 i/ `1 w1 i, H
  10.   uart_init_halfduplex();3 r$ A3 b! n* ?" n
  11.   + p/ u  G3 W. T1 F
  12.   SPI_FLASH_Init();: g$ J% m- i% J! `+ N0 a( X
  13.   7 R0 k; Z6 {1 b: f
  14.   while (1)
    3 f4 P0 f  M- ?
  15.   {
    : _* x+ z0 a6 T: B3 }# G
  16.     ! I/ W' k3 M% g5 p& c
  17.     SPI_FLASH_SendByte(0x55);
      J4 u  p& P' H4 Z; h) [8 Z
  18.     Delay(0xffff);  a" x6 K" g$ o' p4 X
  19.   }
    ; W( S3 o7 p/ O; g1 F1 k
  20. }
复制代码

! ]! r# {/ m3 i    三、执行结果
; {' {' x  q0 I, x5 L6 N  }. C: d) v7 E6 M" r

: V5 k/ d8 S0 @! C    手头上没有SPI通信的器件,使用示波器测试下,SPI_SCK和SPI_MOSI波形:* O% f, g) [1 K" e6 v
    黄色:SPI_SCK
$ a- |2 w- @/ l& e) K9 A    绿色:SPI_MOSI+ m8 H1 ?8 B0 h% m9 P, _
    SPI发送的数据是0x557 P& I0 v" @5 o) y
    2.png
( f# v! ]$ U& _  }1 Q  D* g% Y6 A% G0 k9 F

9 I* D# [0 z* D% r% g5 n5 c/ u
  q- x: M8 x4 I0 C6 o& P; f
, b! M& ~. d$ B1 e- g
9 f) P) ?5 u/ j7 |

, n( Z3 G6 Q+ @! w9 ^. u3 @7 l2 N6 k6 Z
; z3 F3 y# u# j; U9 ^

( i4 L) T2 @7 W5 E
; _) x4 e9 s, M( y
$ i3 p0 w+ f8 M6 b
4 a+ S) B4 \! `4 f6 D
- z6 D$ H9 y' f7 _* E2 @

+ H( x+ Z, W' z  v/ j( l

" `: }* C( B$ Y! H. @9 H) b# }# ^! U( a  y! a: G# A/ Y
5 Z& O$ X& {) N& b/ a
$ O  P8 ~) j/ m. q4 Z9 ]

; x1 D' G' s  n2 C, {# {( D3 c* E% r0 n   
% h) z3 K8 b" _2 U" x
赞 收藏 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
$ O2 l  {/ f9 w& [这软件很方便啊
6 k0 Y2 q- Z% R- n
STM8CubeMX不能生成代码      

所属标签

相似技术帖

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