|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
( E& E( l1 M2 j) v/ Z: t9 a2 `5 evoid PSCInit(void)
, o. Z- r+ L( S8 e0 d& j{2 j4 w% o" \7 x+ N
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
$ v3 t: n+ I* ]5 {4 }4 F* p6 d}
s8 t9 h& Z7 T9 I3 a; V$ h+ y
$ f2 B7 ]1 K3 a; y# N! {void GPIOBankPinMuxSet(void)/ m2 Q& W% O& h% u2 P1 K( L' t
{. e! S9 J, t# {& B
// DRDY ------------ GPIO6[14] -- 111* q* D0 H5 l% d: L4 s; k. I+ [8 c" o0 ?
// SPI1_CLK ------------ GPIO2[13] -- 46
; n. O1 h, d) A1 b // SPI1_SOMI------------ GPIO2[11] -- 44! Y8 k& f6 i6 l
// SPI1_SIMO------------ GPIO2[10] -- 43) d7 b4 j1 y2 [8 d! ~5 L
// SPI1_CS2 ------------ GPIO1[0] -- 17
* u) B) ~, b+ _0 O$ R+ x // SPI1_CS3 ------------ GPIO1[1] -- 18+ U1 ~$ E3 e" E
9 m0 o* ~% ^1 g: i HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
& v( z7 O4 [. b. q, _7 F) q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
5 F( ^+ a7 A% v. Y! H9 s) P HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);' L* Z8 P+ L9 e
. Y: Q. J6 ?8 C# H1 T( G5 C //DRDY
6 [% r& i( h$ i7 G4 ^ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY; V1 s2 _* _: I+ G. @- U
// CS2,CS32 \8 \7 f& e$ r: v
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2( L' v& F4 Q, F1 b: {( g6 d
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
! T8 `. m6 Q' Z4 R# S //SIMO
5 z8 v; X" T, q& w7 T/ [2 W$ i GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO6 D \. t/ n) V; H! \6 ]: Q: x
//SOMI7 f& O6 C v4 J4 z
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
4 d( n+ f% A, X$ }% ?) `( ^! K //CLK
6 X4 f. Y: ^5 b2 `1 E% Z GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
# d# e( C; g h! _# m1 j/ I$ `7 o9 n R( _
// LDAC# ]4 N. {, M. M% I0 t5 A/ |
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
9 h! X9 y) G' E& Y% I# d GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) R+ B' ~/ A0 F: Z$ r: ^ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& a% a6 v$ g! H& [+ q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS37 N' `, a6 m$ e
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY. D e! N* _/ ^0 u6 A
}
/ N" B( `$ r2 S9 z4 T$ z$ r# d$ f; s$ b; s
int main(void)
" x7 G; C- Y8 I$ K' t{$ `% k3 x- W8 D; ]" `
// 外设使能5 Z6 J' M) _' \
PSCInit();
- p8 R. ^2 L( J( b; |7 D1 d( ]5 U& H$ z/ i% N' d
" L+ t: f- w* s4 P // 管脚复用配置& [9 A3 s+ v( v t' f8 L
GPIOBankPinMuxSet();. w8 k' m0 k7 v) V( D' Y1 d& F9 n) x
for(;;)
4 @; F d; r4 v/ \5 |. M# h {; y$ \0 w2 U5 V+ @! B2 I2 r
SET_SCLK();//时钟正常输出* o! W. O9 r' n4 {2 F$ _! n, o
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 { |" I5 C$ O GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 j8 c% a( z+ C3 q, m( P- u GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN/ a" Z* K2 R7 H; S" ~( L6 a( C
+ Y }7 }" z& N6 ^2 g
delay(20);4 |9 N t. D+ _+ e9 f& z, ]
CLR_SCLK();
4 k4 H# N7 E0 w+ _* v GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
" Y: B8 f3 ~! n! z" ` GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
. q" q: h* w$ |" {, X6 l1 t7 l GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* n0 n/ u) l6 Y) j delay(20);
: q7 B2 k" \1 J, D. D6 m }* f& x, E# M9 n! u- P( h
}2 E& E- ]+ m+ G5 u0 m# q* x; E
|
|