|
|
使用下面的例子代码,不能使SIMO和CS为低电平:+ U/ I# C4 y: M* E( @1 y
void PSCInit(void)
4 V6 j3 y* ~! H" }* ]. ^{
! J6 x" e0 k- E; G, e* A9 M: K PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
9 G6 q5 k' w! @( z& w4 P# h4 H' I}
0 t/ M& L: F( V& a: o
# Z0 _0 c3 w) W1 V# Svoid GPIOBankPinMuxSet(void)( @, S- S+ p9 F3 v
{0 w; x$ D& H; q1 G
// DRDY ------------ GPIO6[14] -- 111/ \$ n: l+ e: i: I8 e* u
// SPI1_CLK ------------ GPIO2[13] -- 46
' D+ k; R" P" B6 v8 G& @) `) l // SPI1_SOMI------------ GPIO2[11] -- 44; [& C9 }/ L; r( K2 R P2 R: d
// SPI1_SIMO------------ GPIO2[10] -- 43, i% m3 O1 z3 h
// SPI1_CS2 ------------ GPIO1[0] -- 17: F4 l+ N8 Q; ~5 ^* u: j0 ^( b$ D" v7 }
// SPI1_CS3 ------------ GPIO1[1] -- 18
/ i6 V- K5 _6 X% ~9 }+ ^) Q* }" ?/ I7 @4 S
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
9 ^ v! H W t HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
6 R1 C$ f) L/ ?7 q. d+ E HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);+ f- |. p( v* x3 x
2 f2 Q4 W" @7 Y: a" M" p
//DRDY
6 s; n' s! w" ^ P' V' v GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
9 y2 u3 E3 v |* B // CS2,CS3
! A; `3 s$ u6 W; R2 O, m; V GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
6 E u' q9 p9 P: L, t GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3; F. k2 y! n6 R, y8 H
//SIMO
- z) A: T% R, `% L/ J6 F GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO4 m8 q3 d! p8 j/ H
//SOMI$ v7 Z# M( j% u% T
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI7 Z8 ]9 s1 l6 i$ \7 [0 Z9 A2 n
//CLK
6 D: w8 z4 U4 V; e4 G GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK" p) P# \8 }1 ^$ k' F3 H; \
( D. f4 D @) e // LDAC
; G7 P3 k0 \- s! @& s GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
, X3 F- j& k3 Y0 x GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN# x n6 R% W6 o& O3 V+ X/ H0 Z& \
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
% ^8 l7 j7 ?: E: _7 v: g) u GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
0 V. c. W6 o! `$ \5 \! y+ h GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
6 G x- P# I% c6 o) M! s2 H( W}
* U# O& {/ }; B, I7 K% [
S0 Y/ Y- Z4 x" W( Q# gint main(void)
0 r8 ]2 j4 R+ G* S{
2 E2 R/ W- T8 I. e6 @# d // 外设使能
: g9 c: M' }; z' r4 l3 N PSCInit();& m# a5 ^/ k8 }/ L9 _, k! t7 ~
6 E) o4 w) F' v2 g
$ c/ R* X5 \+ G+ {1 N // 管脚复用配置$ O3 h1 j9 a2 S7 S
GPIOBankPinMuxSet();; S" G0 r, L) q; ]' h2 ~( C& d. ?
for(;;)
. j% T0 ~+ i: H' P& g. \ {' S5 \* ^2 w( ^' @0 O
SET_SCLK();//时钟正常输出 w- D, ]! j. q" ]2 m8 N
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% E! i- \3 N) @% n6 j
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
2 S( c7 o" ^! v' `+ Q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN8 `& f" A3 A( L5 ], J4 d
0 s* f+ v+ K2 T; G. p" [ delay(20);+ w, U# [7 P# B/ ~
CLR_SCLK();. j3 P. a5 n% h$ p6 I
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS32 C5 ^; ~6 R0 H! c$ H- B- |. j
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3) @+ ^% T6 M2 O' f
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
. J* z; G) i9 S+ z* f4 Q+ C delay(20);
7 a- e' i+ V/ d! G: A: Q" I$ M }
/ a+ B; [. ~) W4 y}' R* O; B; t8 X4 Q: D4 \+ J
|
|