|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
: O( I2 X3 F* u, avoid PSCInit(void)
, ^; J8 w& a, m w6 {7 c7 \/ [$ d) u0 v{
5 J7 y/ I$ n0 Z1 l. s4 V/ M PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
2 ~7 y& Z, A6 B. D5 |}* E$ ~7 R. V; D* R3 L- P
( q* _+ ?! E' l% m7 B9 Rvoid GPIOBankPinMuxSet(void)
3 |0 A0 u1 N: d, E5 g f2 j! e4 E, X{
9 H, w5 m E) T // DRDY ------------ GPIO6[14] -- 111* c& ]. v3 o. s7 J1 p! {
// SPI1_CLK ------------ GPIO2[13] -- 46
. e. m5 }1 r. v# a, ? // SPI1_SOMI------------ GPIO2[11] -- 44
, J9 T) ~& X ?9 }7 W" \7 ] // SPI1_SIMO------------ GPIO2[10] -- 43
C1 m* m4 U; R6 N3 o, x& }/ P6 i // SPI1_CS2 ------------ GPIO1[0] -- 17/ P) _. I+ o" V4 D5 R
// SPI1_CS3 ------------ GPIO1[1] -- 18- ~5 o2 K6 O3 Y* r5 M4 p
+ X) J7 u( T# | \7 L3 e
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
/ Q% R6 g' K6 g( \+ H HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
7 A# ?& R) `/ q& l' L HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
2 A$ Y" j$ Q/ K& m7 v3 {0 a$ S7 ^% o4 P
//DRDY
: J3 g. ~+ W3 m4 N9 O7 A' L GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY( g; X/ `6 j, e% g" s/ e; [
// CS2,CS3, @1 Q- |/ r& c- W6 Z, c
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS20 C* g: T1 ]/ P9 }
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
' F% c* {% X0 z //SIMO
! |& V, A* A/ l2 ^0 z* D& Q GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO& N# M* \ S: D* @( m1 o
//SOMI
- F4 c0 D+ l& S: `# {5 A' W GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
! h1 |- P P, w //CLK
" @7 Z/ T. w g1 [0 R GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
1 K) v. J1 |# _- f/ U, x, K9 s2 Z0 D
// LDAC8 E# D' `' S# i) A8 t
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK4 ?7 Y- T [ _/ g
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
3 C, @/ f) J9 b6 R GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 P( p: R3 G2 i1 I) z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS38 W) Y% _/ Y0 G* C! U: Z0 Q S
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
$ h6 `6 }9 M- _0 C. H: ~6 Q}1 e0 H; @/ M* B% b3 I' X
' C* P4 h- m6 z9 F2 [/ t5 |
int main(void)
5 ?0 ]; _0 D2 _5 k9 K& N% z* f{
4 x: }: m; w$ R$ o3 P8 r // 外设使能4 K/ u& Z! `* Y! t% ~
PSCInit();
% K: Y; i9 G. `; c* i. m, v1 ?8 F6 Y- \( M6 L# t
7 V: V& S6 o, i& {% T
// 管脚复用配置6 w' U+ f }2 _4 s. F: n
GPIOBankPinMuxSet();" ?' Q. A3 X7 }+ t0 F0 i o
for(;;)8 |! o h0 C$ z$ X. _
{
* n. i; M y! a SET_SCLK();//时钟正常输出5 f9 O5 X1 V1 c" t2 j
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS25 p% a- O7 `8 ], W2 M* v& h& F
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS31 s4 i8 ~; E7 \: Y& i! e
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN; A$ T# @: p- D6 j. V0 x3 K
6 e. d; _1 f$ U' Z! C% a
delay(20);8 D* j+ n; V. }2 A' n
CLR_SCLK();
1 P" Q3 @& N" T. d, X0 E/ P GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3$ a7 O$ p: `" N2 d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS32 l/ m! }2 ]9 W/ l v
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) u( j' L, E. A+ E1 }3 g0 P delay(20);
3 M1 i! p+ I' j9 s7 J; m }
" W5 C$ ~( ~; E h( _9 K}$ `, Z( s" ]! y# c
|
|