|
使用下面的例子代码,不能使SIMO和CS为低电平:8 O8 x* D8 x9 Q* i; c4 w5 w
void PSCInit(void)
: a1 Q+ E8 {7 F' W# w{- {. n1 c- D% A% a! O' D1 Z
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
8 ?/ y" n* k9 S}
$ \' L2 ~. f- ]* p* t
$ ]* X- B, v& ~2 E+ Evoid GPIOBankPinMuxSet(void)
1 n) H' V3 M% @1 `( _{) K, E4 E& S, g9 C: t: S
// DRDY ------------ GPIO6[14] -- 111
1 K& K/ l: U. _# } // SPI1_CLK ------------ GPIO2[13] -- 46
% t" ?& K5 @: u `) R6 N4 H* O$ U // SPI1_SOMI------------ GPIO2[11] -- 44
" l/ g3 @6 x! g7 T4 N // SPI1_SIMO------------ GPIO2[10] -- 43' K% b: u9 t2 {& w2 y
// SPI1_CS2 ------------ GPIO1[0] -- 17
7 J: P; ], H% B+ p$ t // SPI1_CS3 ------------ GPIO1[1] -- 180 l% G5 ]* `: P( [
. z2 G! X- A H- J% E. d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
4 G8 L+ e: k R: `. c( o& `% v HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);" a3 [9 v5 u1 T) y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
+ `3 J5 R2 [. A T5 L
5 q+ @' U( {, f5 h8 I //DRDY
3 F! U' t" E0 b9 t$ k0 | GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
" X# X, c1 \ d* `2 w- s6 ~( K3 ~ // CS2,CS3
5 R: ^2 k' x7 b7 _; `; J GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2: g0 o) `, W k) I0 ^1 `
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
1 r8 f# y8 r1 [6 A( `' h //SIMO
: v$ V9 o# A5 E' t& J8 _: A GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO& q1 d% M0 P( t. J; ]
//SOMI9 x# B7 z; e3 Z1 x: L8 |: S
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
7 [" i, M- ^& [- |* g& y //CLK, `+ r- j! o' t& J1 r6 s3 A
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK. N: ~5 L2 A2 ~
$ T5 L" N3 H9 o4 y
// LDAC
; z9 r1 w) w4 d/ v( {9 J GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK2 g; T- n t7 Y6 M: @8 R
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! Q& X+ ?8 `, F. L3 Y( F9 S
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 }2 v# D; `7 T9 {) a; |8 d; _
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3 Q4 P/ }9 _" C+ ~9 n
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY; l( D0 M# x3 v3 i1 O
}% Y9 Y B9 X! g( B
0 {5 t7 v* p1 x' L7 k! n! H' D( h3 n
int main(void): w& W. }3 y2 b/ P$ ?8 n# y( y
{
# M, n& f( s p6 V // 外设使能
+ c5 n/ L; S( ?. [' E- o9 S% j PSCInit();
+ t9 @: `6 f7 q7 X0 f
& m0 P: N3 P% G2 a ~+ N
3 y8 }3 g% I. b, X: j' v1 N // 管脚复用配置4 T9 ?, J) F* r8 Q7 N6 n1 A% g3 s
GPIOBankPinMuxSet();
8 s$ u# X+ J5 C; u: p# m$ t for(;;)
3 x9 i, B( h) X0 `0 t5 R0 i7 ^ {
; W0 r( m" H& ` SET_SCLK();//时钟正常输出9 y4 \1 q# F: I) Y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 m: `5 G4 t5 q; b
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
* b. ^1 L0 [4 ~( o) s GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
. X7 }( t n8 n; \* G2 m. g3 [ m( [ o
delay(20);0 K4 d6 o0 y, N* |' C
CLR_SCLK();9 a/ @' G6 A; \1 a
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS31 v/ }# y# W0 l# m7 t6 D
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
7 ?& b O' ]$ r, G( L5 ` GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, S; o6 e3 g8 Y( `
delay(20);4 f* I8 _! A; ], ]. W! A1 V1 k# {1 t
}
8 X x+ b: o9 _( U' m& h: S" W5 c}& n$ ]6 |8 p/ q% L
|
|