|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
/ w5 N! ?6 u0 p- y" Rvoid PSCInit(void)3 i9 p6 u( X8 p2 o1 i# W+ g+ m
{ k9 S( N M% `
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);4 q) c5 P+ Q4 l, {7 x' g
}
" [; M! ~3 k8 V: W8 c
4 k, T0 m9 w0 s/ qvoid GPIOBankPinMuxSet(void)
9 M( M4 O% |% V/ `" Y, [{
1 S+ N1 } E I/ ^/ l: I' O& a // DRDY ------------ GPIO6[14] -- 111
: ?+ G* p0 r$ Z- }5 R // SPI1_CLK ------------ GPIO2[13] -- 46! F7 l* J+ j* V( P' o3 k
// SPI1_SOMI------------ GPIO2[11] -- 44/ U l# Q$ S. S8 P0 h. ^
// SPI1_SIMO------------ GPIO2[10] -- 43) H0 \3 v% w8 q4 ~3 o
// SPI1_CS2 ------------ GPIO1[0] -- 17' N0 q7 n2 f# D! d) m) R/ X
// SPI1_CS3 ------------ GPIO1[1] -- 186 L, M8 b4 i. ]
" c* h2 y& W! J# n' W% b: D' e( m HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);- ^( r3 _6 T/ V
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);! K; K. w- V) Y1 }
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 b; }+ w" B9 J. u! _
1 X+ H& n, y3 e. M, e1 W: f8 A //DRDY& L6 Y0 t m) { h- F$ w
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
7 ?2 R6 |3 ?+ @0 u$ t7 } // CS2,CS3
. c1 T. }% J, x- A( O GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2" M4 H3 b. |1 T: ?
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
6 J7 _6 k' G1 J6 m1 j //SIMO& J6 l) n, B& K, O# G& |
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
, a3 \) t* u) E- [" }- q //SOMI
5 Q/ B, u8 s. u6 q) j GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
' m0 S+ Q, b! ^% c& ? //CLK
4 V" Z7 t- c. t$ j6 ?" o GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK/ @ c; ]+ g# ?% `. @) t
3 c3 V1 r. R2 O( t- I // LDAC7 M) `& G, N$ c) ~! j: u
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
$ Z1 D& S, A8 D; g. o GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN% t% X e' ~3 F; D$ A: b$ L
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 V0 m4 O* V7 h) } m1 M5 O GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3 b# i! U6 V( o; {# `; ^
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
( b( @- [0 u' V$ a3 `- u}
) }* Q; y9 U# U8 {
- z9 p9 x% F' E# m: X" Vint main(void)
- D; t2 u+ y8 G! Q{5 i& E+ L$ Z8 F- X- ]
// 外设使能% y- n5 w6 l: x" k" u F& j- Z
PSCInit();/ l1 w% G" _+ P* L' _# `+ E1 `' c' u3 [
/ {2 G5 |0 ]2 d
2 B: g3 o4 I7 }- O. O // 管脚复用配置
# T1 c' D! q: v3 I$ y5 q GPIOBankPinMuxSet();- _$ ~; w$ o7 e. I
for(;;)
+ L* U+ a. e5 b( w6 n {2 k% l1 x* j; O& B( u6 R( ^
SET_SCLK();//时钟正常输出
* A% c3 G5 f9 f& ?; q6 [3 v- ?( x6 D GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS21 Y- I0 [2 c* I& [/ T4 J' E. V# H
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
r8 A$ t4 h4 ^ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN8 `" @/ w. U1 p8 D) f1 y% k6 l4 H
! S9 o8 G3 k+ U. E/ q! M
delay(20);
8 p9 b h+ B" O2 v9 n x CLR_SCLK();
* `% n' W* k6 M GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
7 M/ p8 ~& G1 p: s2 ` GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
2 z. C. S/ ?- _ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 g7 ?9 J) ]; W delay(20);
0 n5 [" c+ [- N }
# Z( |8 K4 h! P$ T5 r/ Q G}$ t/ @5 d4 s n6 M+ K! n$ B
|
|