|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
4 c9 D) i9 d1 m6 `" s, Mvoid PSCInit(void)
' _% ]1 p4 S6 m i6 v{5 t6 Y# Q' t% v5 r+ w* `
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
0 p* }* Q5 z- h! ^0 P/ L) s( O}
$ o M* m2 P* g ~3 H f1 x& u5 ^+ @) ^7 z4 C
void GPIOBankPinMuxSet(void)8 J) r3 {/ P) q) Q
{
t# W- R" }8 g5 U // DRDY ------------ GPIO6[14] -- 111% e! v2 [) M( @3 L' q3 i
// SPI1_CLK ------------ GPIO2[13] -- 46 l7 q. {4 p9 ]3 W$ k+ O3 [
// SPI1_SOMI------------ GPIO2[11] -- 44
+ x; I5 E& _0 A6 T: {7 _- A // SPI1_SIMO------------ GPIO2[10] -- 439 |+ U9 A; v' G# w5 W+ a
// SPI1_CS2 ------------ GPIO1[0] -- 17. D, S5 T! _$ D4 g
// SPI1_CS3 ------------ GPIO1[1] -- 18
: B4 L! E1 q! H4 T) B6 {7 W3 B4 C+ b5 ~% k
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
7 [( I5 h; o0 J% C7 ^# J$ D HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
! I' X5 G; A0 a- U% i) c HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);3 p/ z) y% K3 K8 B7 L" Y8 v
% }+ I. d6 ~: ~8 ` //DRDY0 r' j8 o% b* ?1 m$ B0 h+ v) h
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
& g3 D: q' p; K5 o# i. `, \ // CS2,CS36 D8 Y3 ]. H) d, P& C3 N0 I' ?
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS26 h9 C. q/ F4 L# J
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
( t; i% Q# {$ m( e( X4 _' [5 m //SIMO) c$ [, o4 O$ S5 g- F" I9 e9 `4 |
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
4 \+ |4 _7 r- I+ r- K) j //SOMI
' ~3 p$ H" m1 t1 s" n; } GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI7 t5 h, P' j; Q' k" l
//CLK3 E; X' G2 l1 u; ^- w$ q0 C6 @, \0 S
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
+ @ r4 j! e! M5 i$ }# ]% f+ s1 S3 c6 G( _) o
// LDAC, H! E- O- N) W
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK3 `+ [! Z" o+ z) x
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
8 B# G* f3 w' w GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; ~4 C2 X% P& { GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
: N4 T: R$ F! F GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY q: K& {- z( b1 v' q4 o% l) L7 R
}
6 h# ]1 y2 y) W1 h! m9 E) j% j
int main(void)4 P) j/ X8 U6 v
{
I9 a2 \, r1 k // 外设使能2 ?8 H ?$ ?% N8 [& c+ j
PSCInit();
7 W& o, W/ C, r5 G( v) J# t7 i' V, ?7 M1 p3 k
# y. H* X* s( E6 a, N
// 管脚复用配置
" r$ m3 y4 h; e" W2 } GPIOBankPinMuxSet();
2 J' J1 F& L: l for(;;)
. o. t. T3 ]$ @ {
, L; s! |! G L: J, K6 E SET_SCLK();//时钟正常输出4 N& M `% u: R
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 ]5 N5 B* s9 N' `- |0 A- T GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3$ x& r: Z% P. d; ~9 l+ G6 A
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN9 h$ O1 X' X1 ~3 D
+ v% E* X4 c+ U2 ^# s+ L
delay(20);
& ?5 \! }. K/ u* a CLR_SCLK();
' ~* M: N e+ `* ?- A6 j GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
/ R8 O7 s; k3 D. K GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS38 w) f+ r4 v4 I8 E6 q' k
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' r+ w) q2 P7 E0 u delay(20);4 y8 k! n5 V' O
}
" v& t* i+ B x% O C5 Q- |}0 w* |: | k$ o$ l
|
|