|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
) O* g) u- X" W1 o, Svoid PSCInit(void)' [; W8 u5 C2 @% v
{
: q6 p/ i* O5 h4 z8 l: E% C7 d PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
) K4 Q" ` F L5 d}
1 @2 z. K9 {, J/ S
3 Q* U Y4 X4 o4 ^8 j7 a7 e# Nvoid GPIOBankPinMuxSet(void)
' O/ J* m9 B8 Q; F/ U$ B/ M% k% j X{; a! B E* h4 n6 |
// DRDY ------------ GPIO6[14] -- 111* M z% d( q$ d- e/ l: A
// SPI1_CLK ------------ GPIO2[13] -- 46
/ ^4 H* R9 y+ R2 K8 K // SPI1_SOMI------------ GPIO2[11] -- 44: R, J; Q1 G* { J A* n3 M3 D
// SPI1_SIMO------------ GPIO2[10] -- 430 T0 P4 L3 b' c S E% Z1 \6 V
// SPI1_CS2 ------------ GPIO1[0] -- 17
2 B# s: T3 c; I e/ o* f // SPI1_CS3 ------------ GPIO1[1] -- 18& l9 z) [# D8 ~5 F* \ s
# v" n" Y: p9 T; X$ A HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);" J, }+ Q9 S/ K8 z- U/ t
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
+ x6 ]# G( o" z- I8 g HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);4 B& l4 }! F# t( k6 F
* C7 D2 R0 y, w) q( @4 |
//DRDY
6 b( J1 b) p# l GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
7 F2 r6 E% L& K! l* K! o // CS2,CS3# x4 U& K: Q* y3 P
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
& E' e% I# U, T GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
, l5 q5 D$ y% l; l, h9 P //SIMO
2 W% W/ y5 D7 C% ]$ v2 U! D GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO0 D& x2 F; p; t" M, @7 m! m, T c
//SOMI( c$ k/ c- r6 B* p, T
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI0 K7 j R: z" s! P0 X f
//CLK
7 u3 x1 a7 Y) Z8 x GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
( E$ e! D1 Y+ k7 c' C* w+ [
5 B$ z* H+ v# K3 }" R- K% a# C // LDAC8 J0 T: W+ O+ B% `4 I* |
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
7 a1 z+ h, ?/ t: { GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN3 N, P0 }& G! J' c
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# T5 H# {. W3 W* X) y d GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3# @# J0 @ {1 n/ S# L1 e
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY* V7 ^, ~6 f; L! W
}- l8 Y+ ]/ N j& J' W/ H
" m" `; P( j) C- y! A* Qint main(void)( |3 q" l L _5 U% ^- d
{
( l3 n; Q$ m4 s' M // 外设使能
- i) \! M; Y( ?9 @9 Q PSCInit();
) d9 O$ ]; z3 E h7 s! Y
: F8 h# @, A: B3 Y9 L ) o f: U0 Y, R1 n+ ?
// 管脚复用配置2 a; C$ y. m' W0 a! H* Z! r3 \- p) ^
GPIOBankPinMuxSet();
6 n* E% ]% o+ s0 ^ for(;;)0 U9 ]) F1 L; V/ @
{' f& H* M+ f# G2 Y- v/ O
SET_SCLK();//时钟正常输出, ^1 N) m; w' Q' X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ w& o2 r3 {4 Y1 @6 ]
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
& {+ G) c, ~$ m, h p GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN! v! O J% z2 c* I, g
/ N. q2 {' x B# {; Q
delay(20);0 c4 y9 l- {2 e! c, z d
CLR_SCLK();" d4 u& m; C( \( ]7 y
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3- {2 l2 H% M8 y/ d$ p
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS30 P+ L8 S3 f! P/ G
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* D! _; K% ~: L' P4 |% P$ U: V delay(20);( R; ^0 I1 E' P8 y6 E
}
d# k, _! ?7 M3 t1 _}
+ m$ q8 Q5 b/ T! a3 y5 W |
|