|
|
使用下面的例子代码,不能使SIMO和CS为低电平:+ z. \( v( |2 n# T2 E" F2 D
void PSCInit(void)
0 S5 N, _ G% B{4 r6 ]0 Z' L8 r1 F
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);" b1 R2 S' O- r5 D
}
) p5 Y* R* b7 C* t% P( N- O2 D2 C9 T& G* @- f/ @& M" N$ t( A
void GPIOBankPinMuxSet(void)8 a/ W, |8 `+ v- b" T9 Q
{
* v' \# J# V& k" [ // DRDY ------------ GPIO6[14] -- 111* A, p% f- _# a3 E) j: I
// SPI1_CLK ------------ GPIO2[13] -- 46
* o8 b* l3 l# m6 }1 u! X1 s // SPI1_SOMI------------ GPIO2[11] -- 44
3 f9 y2 G% [! M' N // SPI1_SIMO------------ GPIO2[10] -- 43, n' c: `3 w; ?# x! P8 G, [
// SPI1_CS2 ------------ GPIO1[0] -- 171 U' r1 g' H+ F9 v8 G& g( ]3 Z- d
// SPI1_CS3 ------------ GPIO1[1] -- 18+ ?5 d# V% x$ c# X
" w. d1 @8 P- K, |' j6 U' Y# ?
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);2 T7 n' t' o# p- \+ _( e" ~$ y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
# d* U1 d5 U0 K1 j% R HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
4 D8 Q- H& @* q/ z8 u" s8 C/ n* D4 @- n" p/ g5 M6 N9 j7 U- @
//DRDY! H3 h4 M$ S' ~ E9 |
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
2 h/ ` |4 b# F; l5 e // CS2,CS3
3 y8 A+ u- q: A# K GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2# p# N, R0 o4 q! H+ H2 E
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS38 e) O+ c% ]) k+ J2 ]
//SIMO
% y. M3 |7 J' N" j6 L& _ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
- K/ V, }. T) s' U# l //SOMI% \! k; p* V, ~$ A7 p) s3 }
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
, }1 V+ [& ^5 }; ?, @4 {, K/ s //CLK3 G% ^8 W! e5 p: R
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK O, c7 M" m" U4 C; I
( m1 a6 x* ?, Y4 m4 ~, c
// LDAC/ l- }1 T, t6 ?8 b) m, b9 W
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
% w- Q- G) J* f' l GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN9 X9 |3 D: M) N. ^
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- H6 E2 A2 e2 p) z& V
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3' K. [" d4 w. q% E4 B( `
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY5 d% r, i* h m: E
}% @# ]- I ^: [0 K
. _0 t# s! c8 b% @; ~1 j, T4 p
int main(void)
' X) _% e" X5 x* P, r' j# B( ]{
: `1 f3 O! X7 I8 n // 外设使能7 O9 `) i+ X$ j! Q# A
PSCInit();
. R! i. v# z/ R; O
4 r/ V! p* V5 A2 p2 h
$ r; n1 x# Z9 t# e; q // 管脚复用配置9 U- A* P$ s! ~9 j2 y; y
GPIOBankPinMuxSet();
/ p; f! C! s, ~8 _ for(;;)
& | x6 U5 Z) n" ]) n) j {# j: c3 x) B5 f/ j% S! j% r8 n
SET_SCLK();//时钟正常输出# g C* m" _8 R- g4 N) ~; h" f* l
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 N! W" _3 L6 M$ N3 G8 ^ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
# f* w& [' k" @0 @' Q& N" r9 ]1 Q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN7 b5 g( x: C2 V/ Z- \/ ?9 Q, d
4 N7 k, G5 V3 r( ~9 z; f6 ] delay(20);9 C3 h: E3 S! `: w- k
CLR_SCLK();
9 `. y6 z: _3 o; w* h GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
# A4 L# X) |4 ?! M8 { GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- m$ ~' w) \" K# W GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* k4 l& f( Q/ @- p- C9 h; m delay(20);
$ {9 K5 }% Z7 P! w }; \( |) V, U* f, l
}
9 N; L& K* u" t6 B |
|