|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
1 ^* |0 z0 R* T/ ]8 cvoid PSCInit(void)
" d- P. w" B) A) L4 k{7 k! ~8 E8 |* w2 G% w' v3 V
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);1 X) ~4 P/ }/ o& M P
}0 O! W, z: w6 C; o
, @; c, D G9 n# Y$ C4 ]: t/ gvoid GPIOBankPinMuxSet(void)
0 x. k3 J& ^' Q3 z{, L* s" p0 p) N( B4 Y
// DRDY ------------ GPIO6[14] -- 111( m! R; R, F7 [2 u
// SPI1_CLK ------------ GPIO2[13] -- 46
5 j7 {6 Z, C3 I C" S) O! H f // SPI1_SOMI------------ GPIO2[11] -- 44
9 a0 S; ~8 ^2 p; x. S) E // SPI1_SIMO------------ GPIO2[10] -- 43, I! U7 Z# x$ ?$ C
// SPI1_CS2 ------------ GPIO1[0] -- 17
( m7 |" ~8 A5 c // SPI1_CS3 ------------ GPIO1[1] -- 18# p4 ~5 K" R$ ~; K- P2 A
1 ^7 E I$ Z3 Q( x$ P3 {3 A: u HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);; s: w2 a: h2 Z/ \( h+ m
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);% ~- m) ]" v: ?
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);) n* R# K! e- \0 T2 R
( I) ?& s6 ^* m8 g2 c
//DRDY( r+ {. p, m4 q/ O- X
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY" ]7 @8 }3 A) @; {$ l
// CS2,CS30 K" b2 M% d u3 ~2 B
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2! E9 a2 ^% U$ {+ N
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS38 c6 U5 |/ N& G3 @9 w# X8 M
//SIMO @4 z0 U, `% J- ?' K
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
% G" y7 F8 P+ K4 }/ s! t4 K //SOMI
4 Q, d) z \+ Q- j3 E; _: V' K GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
5 Z |$ I- j, d( G# i O //CLK
6 D @3 b* u. p+ t: T" @0 b5 Z GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK: m. H) R; I! T( g, r# G( ~" C
9 m4 E' e- G4 f( g3 X. m
// LDAC
7 a" U F& w' y3 D# m+ Q! k! ^6 J- I GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
0 Q# [$ \; j! G& x4 { GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ C' c6 v- ?( c8 j9 X8 u& E GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
1 g% U/ S% T7 W/ S! t9 J% }! M GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
2 A* }) J- u6 W# _ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY3 H& ]' {. ?& w7 a- `) Z* u
}
6 W, e! R9 E2 b0 K& B. v% i4 U6 x8 B! \4 C/ W+ @
int main(void)( q& D" Y1 N$ S# L
{
6 J; y: k0 P' r* g7 e- e, Z( G0 @ // 外设使能
8 d' P3 E7 u1 P+ m9 p PSCInit();
' S1 C' Z# i9 T3 l7 u3 K
+ W' q- r) ?# J
! b6 h: s' W9 |: X% J // 管脚复用配置
( v- B2 P3 S. T& U8 g GPIOBankPinMuxSet();
' P; W9 U& T- C4 ~: X, l for(;;)1 q* a3 [3 A- F( L L3 T: V8 k
{& M% q' K/ F6 }; ~) E9 t
SET_SCLK();//时钟正常输出8 i3 o6 \2 h4 ^
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
P6 C( G9 |% V: A3 E, |8 x W! H GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
7 j1 ^, U# r! @3 [, s GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN( R, L+ ~- _9 X# C' c6 G) R
1 }, V) w& L2 N7 T; q+ |
delay(20);, m8 q8 H( U1 d8 c2 k
CLR_SCLK();
& M1 n0 l7 D/ M& X# o GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
6 x! k8 r, K' P% b GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS35 S! }$ v. H$ Y, D/ w
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
|' i' V% @1 \) B" ~ delay(20);
6 m1 D. E& i' _( t r }
% l5 G$ ] [! m}
5 q7 V4 n* p3 W |
|