|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
3 A% S4 Y: f: A4 R0 b/ Avoid PSCInit(void)" ?; s6 U3 U; S
{! o6 A6 z: G: B
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);$ ~0 _ S2 j- _3 G( x# ?6 ]! |( P
}
0 j3 ?/ b: K6 |1 B$ `* \$ k7 q' Y, S- I, X. `% u6 c
void GPIOBankPinMuxSet(void)- v1 l1 ]5 ~1 @& g8 r
{! U% b/ r1 {7 H5 Z& }
// DRDY ------------ GPIO6[14] -- 111+ _) v" ^9 l/ i
// SPI1_CLK ------------ GPIO2[13] -- 46$ Y( \2 c* c% o! A0 I+ I, b: c* E3 `
// SPI1_SOMI------------ GPIO2[11] -- 44
/ E4 B% a6 w" t' e6 }' j# N // SPI1_SIMO------------ GPIO2[10] -- 43
2 [! \2 O# k* \7 s3 l! r- x8 N3 P // SPI1_CS2 ------------ GPIO1[0] -- 17/ H! v* B0 k# g
// SPI1_CS3 ------------ GPIO1[1] -- 18
% ?7 [4 P% d1 r3 L8 T) A
3 W/ V% E3 j- q; N HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);+ \! ~% p" r4 O3 ~7 r
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
5 U0 w) z% j; c: W5 M' _* d- N HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);, m, o0 L& v7 T! X. n( o
* g3 k5 c5 W# _) \5 n. a //DRDY
8 u% D' M9 s5 k GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY* p" e- b, B: p9 Y
// CS2,CS3& w" J; j6 s6 T% a+ X% ^. Y6 k
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2$ {0 y; i+ y; \0 s0 m) q( {
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
' H: S, K" i2 M; H8 P //SIMO9 n% ], S8 I% V( F- l. ]
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO, L: s4 C5 ^! R2 R) z! k* g
//SOMI
# B9 S- Q/ `6 t6 T" A1 M: y! w GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
4 k9 b+ w! u% |5 a: J2 A! L6 A //CLK" M2 U/ T# c! m4 u
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
5 |4 i' o# K# c2 B6 U: B" o% H2 J. U: o4 M0 m
// LDAC! H3 T0 |9 s) W2 R' K
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
# I6 ~9 ] Z2 T/ L GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) _/ k p7 Z* Z4 h1 r/ } GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, e: Z7 @/ n! ~2 u8 V# ~5 u* H GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3) ~) M0 S6 p2 \8 P; K6 }
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY5 k. @. [# D0 q P5 n
}
. Z( f: A% F# ~
- ~- U. P3 ]8 v9 }$ I+ m2 Dint main(void)6 a. S* s F. \" F! I0 t- Y) `+ p
{
" k8 z5 R h0 v$ w! F, r1 }; T, K // 外设使能
/ J T( K; m. [1 b& B PSCInit();* w C. T; b# j. K
U7 r. ~ k; o" B7 Z
0 @- T1 \& B: H5 B) I2 p& n: Q) v9 _ // 管脚复用配置* F; M; p# u$ X" [; ]
GPIOBankPinMuxSet();
5 i" b* W7 l, t& [: g, } for(;;)
' f- M- d/ D8 G% G, A {1 [( q, Y/ ?$ K4 ~! [: m& X. d
SET_SCLK();//时钟正常输出5 F0 `4 G1 G: \2 Y8 A) W7 k
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- |1 _2 H( S+ y5 I' e7 c6 l* y% q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3 ^1 Q s7 Q: a- L3 X- o" S
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
& |! Y/ }# l* K* o2 k3 p
% u6 c& P+ q: j% b* g delay(20);. a! y) N8 x. v* r: M7 F+ Q/ q7 p
CLR_SCLK();
3 V9 ]2 H$ l1 o GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3' N: n3 w8 ?$ s; |9 | j
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
: Z# G I% d+ W" K1 S0 I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# ]+ Z# v: q6 u, \4 H delay(20);
- M6 S+ r( C7 E3 [5 j1 n; k6 F9 } }, N- U: s$ t3 K; _0 S" ?
}
; q* R- Y4 A5 q. n |
|