|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
; {" L0 R( h% t. x6 r F# Yvoid PSCInit(void)
% `5 k' i& t1 F0 R' x{
4 x$ T2 g) ^' {" I PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);$ R$ O2 m1 ]* r3 O* Z* V6 L
}! u2 e8 q/ m9 G/ Q+ @; `8 _
, v- Q. a" y1 ~! v7 V8 mvoid GPIOBankPinMuxSet(void)
3 @0 p5 Y& s% y1 M# s0 g, h2 J{
/ ^: V' B: m) g9 j( L // DRDY ------------ GPIO6[14] -- 1110 s1 O2 j+ j; X! U* @4 _+ ~! X5 y* \9 D
// SPI1_CLK ------------ GPIO2[13] -- 46# h ~' O+ F# b! J7 n
// SPI1_SOMI------------ GPIO2[11] -- 44
+ t" H* s2 m8 T& t( m0 k // SPI1_SIMO------------ GPIO2[10] -- 43
" b1 v @# z- ^! _/ c // SPI1_CS2 ------------ GPIO1[0] -- 17( L- Y% b8 c- k3 n( P
// SPI1_CS3 ------------ GPIO1[1] -- 18 l8 N! E. }0 f& X' [: { i, K+ v+ W( ?
! R2 i, p7 \. I9 f6 Z; |8 ?, {( p8 s HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);* K$ W3 G9 p- P8 D6 @
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);' G: Q* v9 p0 {: d- W7 ]+ x7 w+ l
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
+ M, X J3 Q U+ a, q, C. T4 y7 u3 P/ K; u5 _
//DRDY1 G$ @, K5 H. n/ M: A- X
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY! ~: [: U4 k) Y& G2 m3 ?
// CS2,CS3
" x: {/ N: E" t% ?. }8 j GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS25 l* _9 ?3 s. [! ~2 R: D; \1 J- ~7 F
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3" l$ O1 s" k9 U% e+ I6 N" b: I, Q
//SIMO
, V$ O3 }8 r. F& ^% G$ r6 y GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
2 e9 D) J' P0 T9 ~$ ^; y, \ //SOMI! K/ }1 `2 Q( i; P2 W
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
6 ^6 V" `/ g4 u5 M2 N L //CLK' p, C& `) e4 j* L8 c
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK4 N3 C: J' W% O( N# S: X0 B2 m
+ b+ P& }, |6 G0 @, P+ H: a5 A+ ]
// LDAC, [2 T: _ A5 N/ i8 W& d: X) q
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK: H; _8 U# L" j% ~, M$ H7 y$ l
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
; \ f4 G! }7 `( i$ p2 e, @) D GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 X! _: o9 }6 x" S2 j; H9 [$ r GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS38 |& ^- ]+ F8 L" A& _% ?5 x$ T
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
, `+ u) `; |# Q# a. F4 J9 {8 u' L}
0 O5 c! |) b! _ u) l" B* W, k, Y. e# o8 `7 |! p7 _
int main(void)' P! e" c5 \" D
{- K6 K; W2 T+ D& l) ]( A M' P# Q
// 外设使能( k2 I* m) E6 l, n
PSCInit();4 I0 i* B+ j5 w$ p) v( s, w, z
# _' b6 e5 ^1 y' r/ N * ~9 }5 s- `3 R3 q9 r/ \
// 管脚复用配置
9 v# O% d2 J& G* i1 a- S& K GPIOBankPinMuxSet();
3 r& k! C+ L2 ^5 L4 Q. C8 V% { A for(;;)* A7 K6 H: @9 J) o# I: `8 I+ L
{! L* ^6 e$ Z8 R! m/ c1 t
SET_SCLK();//时钟正常输出3 Z- d2 j: w' Q: y7 |$ r
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& W9 _! t7 r2 f8 g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3! x8 p; f) c2 E: e% c" R/ J, V
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
# K* s3 s- j6 L7 W( j8 V* u
' J/ |/ v; f4 E, o5 U delay(20);: G3 B0 Z7 E8 U- x, d% @' S( B9 e
CLR_SCLK();
2 j! i+ [, E. E m# q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
! p5 |" p4 W; w* q1 P/ m9 j6 x GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
8 K$ f( s. l0 }9 k# l0 ^3 ]! l GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) y& H. B* G$ h3 `+ u0 V delay(20);* c/ }/ o& A9 ]0 l/ J7 c0 f
}
! `. F6 D7 o0 |# q, d}* z9 z. v' Z7 M) E6 e7 |
|
|