|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
0 x9 D; L2 ]8 D V# ~void PSCInit(void)
1 H, t: U; b( ]{
' b- H# ]0 Q# r; u" B3 I8 }( N$ ` PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);; ?2 a0 E1 U5 [0 B! E% A6 I5 x
}
1 T E2 y; G f: p" E
2 n: U! x# h) I& l' c0 [void GPIOBankPinMuxSet(void)
( {* \4 O" ~9 P3 X{
: S8 e. t) K7 u, ~, n // DRDY ------------ GPIO6[14] -- 111
( q2 P. L7 F6 H5 n7 F( m1 @1 G // SPI1_CLK ------------ GPIO2[13] -- 46
1 q( x" ~6 v: }; S // SPI1_SOMI------------ GPIO2[11] -- 44
/ l2 g; l3 \0 z: O8 e1 g // SPI1_SIMO------------ GPIO2[10] -- 43
' z; ?% }4 R/ M4 b& k7 L // SPI1_CS2 ------------ GPIO1[0] -- 178 q3 N% w* r" W. k& G& W
// SPI1_CS3 ------------ GPIO1[1] -- 180 t; L3 u7 G$ U3 Z1 R/ h: Z
# @1 s7 Y1 h( e
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
# u" Z+ W( a0 T3 c5 B- v5 w1 H8 d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
5 f; z: p* _, \/ O" @ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);4 D& D0 {4 [+ w' s: E D
" a w! G% t& s& K6 O' V" C
//DRDY
& b6 d# g I5 D' z GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
! I4 ~% n( g* J" j+ v: A // CS2,CS3( f" @! K: i8 \! n% U: s
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2* n9 k" t9 K& _+ e- @% H
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
( v8 w4 k; n- R+ J P8 g //SIMO
0 d/ [& [8 k" o9 ^ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
( A5 s) ?3 n8 [7 R //SOMI7 y8 U) R0 v6 U" o: j# k# H
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI' x3 {' c" [; O# @3 y, c
//CLK* }& y" h' g! E# E7 e
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK9 k! z6 K/ r! b" h# g
1 }7 z. e2 Q0 H2 g3 x
// LDAC5 P; Y8 |) h# r) y, r1 G
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
, _% h/ o# `" a7 U! Y/ d7 ]" G0 X: G GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& Q3 h+ I# U B- F& | h" w GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ y3 [% ~6 y: S) X
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3( ^9 u- I9 N* W$ x9 b6 e
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
! B- U3 C d3 @- j$ l0 [+ @}$ X( x- F6 h; j7 A
# V; Q9 Y6 P I; |4 bint main(void), _; S" C) J- \) }6 u: n! N2 r
{" k* @; _8 N, U- `, @3 a
// 外设使能
7 A5 d" r$ b5 g* T, q PSCInit();0 c, ^" x$ S: }+ Y2 Z9 \
8 }, M: X' p4 T k$ \
) |$ V1 P! h1 Z5 i& [" C
// 管脚复用配置9 q: V) D' n6 K$ _
GPIOBankPinMuxSet();5 C7 Y$ i2 h; ^$ h0 e
for(;;)
0 b8 g& D; W1 }0 z$ V {' b, p9 x4 b9 h
SET_SCLK();//时钟正常输出- F$ ^2 P! L, B, r
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2" O- i* @" z1 G% W( R3 W
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
# h. ]/ F/ E: J; q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
! Y H; I" [/ L5 U
( {* D" _/ {& L delay(20);
! Z: l y7 z; Q" v CLR_SCLK();
; w" {5 K+ }3 ?8 e+ j6 E. c8 t! U GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3$ V5 H5 |+ n5 |+ { i9 t
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3% y+ l- e6 L# E6 P5 s) Z! _! A0 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
# {! L+ D$ m2 n8 s) p delay(20);
- ^* W% ^# ^( G8 R7 i. ` }
# b! F/ y# x9 b( t( t}
5 z; U! `- E ]8 l |
|