|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
2 V- \' R& k* f% G0 l/ _void PSCInit(void)
5 h) C# l9 h, ?0 i9 u: C* H{
5 [* J1 y/ C4 O) o- h PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
% g; X1 ^. D& t5 Z9 z9 N( p1 f" N}
: |& N; a- F0 m6 e S1 ^' w$ \, p2 a- C% d- N0 U6 h1 \% o1 u: ?
void GPIOBankPinMuxSet(void)
' ]+ f) h* j4 o3 o! V6 }{
& t" j, k0 w' q- N7 n& E0 ? // DRDY ------------ GPIO6[14] -- 111, k5 b- |: Y$ n p @1 C/ z
// SPI1_CLK ------------ GPIO2[13] -- 46) c9 K+ v! x) i# K+ _
// SPI1_SOMI------------ GPIO2[11] -- 44
* H; r1 o+ @4 U$ X' G) H! W3 [/ ]! z // SPI1_SIMO------------ GPIO2[10] -- 430 k9 ^* ]* y6 l2 ~
// SPI1_CS2 ------------ GPIO1[0] -- 17, V9 A2 Q2 Y( G8 _9 A8 K( X9 v
// SPI1_CS3 ------------ GPIO1[1] -- 18# {# b9 |1 x; a4 F: g
+ E: z4 T' E& _" u! V2 n
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);5 k2 Z( e8 K9 a6 U
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);# k: g! s/ w7 R* D5 E
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
3 w" X1 \8 _* [7 z7 {# ]
) e A7 ~6 c2 ^& J+ ]% c+ M. M Z //DRDY
) J3 a0 i1 R- H+ \ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
/ H, Z0 P: q- b0 @# w' n // CS2,CS31 g% _ j- O f0 n, V
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
1 A" z z) G! Q4 }# v GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
% i3 Y" D! ?- f |9 z- p% M. ^ //SIMO
9 h+ b6 ?! D( u0 E( W GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO" h2 }$ {' r; N% {- j' E% H
//SOMI' d- s7 b& `! O% J
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
`8 R4 ~; H0 N" N //CLK* q1 M' W9 |! E, d
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
6 C3 d* y( H( _3 g- X) v5 [/ [; {3 W3 i7 Z; Z
// LDAC
; w0 S5 g0 |: p; B+ v8 g& E GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK Y K* ]/ p# @2 M) d) [! O
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN) B, K5 q6 b# g; T( T, z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. Q2 g( j/ P% n' M+ r4 H GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
7 `( I" ]0 f4 Q+ i v GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY d/ f: A7 k* {; K2 o2 E. Z2 K
}1 b. v/ u" J* y. l- ?' n; b" b, } h, Y
5 x. A- L+ z! x, C" e B- w. Cint main(void)
8 I# c2 h; |) c' Q! {{' r k( B7 m4 D" p" y
// 外设使能, g/ a6 A; R8 D" u% [/ l# i9 T- X
PSCInit();
- B+ k- k; [6 w/ R: F: N, c& C5 a% k7 O. f- c+ L9 q. Y
/ z) P$ B! w3 m9 f) f // 管脚复用配置7 L h0 u- T0 c' c0 l+ r
GPIOBankPinMuxSet();
/ a0 k7 U& s7 P7 \- T for(;;)' N" z ~2 G( u
{- M( i8 Y9 S, P2 ^/ l3 S
SET_SCLK();//时钟正常输出$ ^: i8 ~! s: Q; L1 T& F/ a
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2" ? _) C2 T; {. ~2 r& c3 P
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
2 J1 o5 ?9 R: r' w3 Y6 ~ P GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN1 O+ [, d9 ?+ @6 P/ r
4 S. R3 @8 Z4 v delay(20);6 Z* y. g$ y# x- I! e2 j
CLR_SCLK();4 p* r7 r: W' d V+ P9 U$ E& ]5 [
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
1 O) `. r' R; D7 n( @ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
, } N) h, v, n( o8 J; w GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! y* B- v+ g5 y2 ]& Z delay(20);
: P* i& p' j3 @& q, }' y5 \ }$ i0 _7 b" ]) t7 n5 t/ q( }
}
0 ?/ n+ m# P! V3 T1 \+ A9 r; J+ D |
|