|
|
使用下面的例子代码,不能使SIMO和CS为低电平:+ n" y* D! I. j; x' G" b
void PSCInit(void): V1 `+ D' q" \ W
{
4 R/ x) q+ G2 A- K9 B/ E [' M PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);4 [4 Y) A8 ]$ Y# W2 _# o
}
! Q7 |9 }7 y6 k6 }% z8 v
0 o4 ]. x' ^( ~: X2 b. ?void GPIOBankPinMuxSet(void)
$ B) h7 Q) Z6 z2 j" `3 A{
; n( h( w( r3 y* [& Q) Y# w4 Y0 Z // DRDY ------------ GPIO6[14] -- 111
. e; G8 \* A9 y' `6 j- Z+ N# H // SPI1_CLK ------------ GPIO2[13] -- 46% X+ X' j" q) W# a3 z4 H4 ^
// SPI1_SOMI------------ GPIO2[11] -- 44; s5 ?0 x4 i) f3 x5 |
// SPI1_SIMO------------ GPIO2[10] -- 43
& B$ @9 J6 z4 ~6 Z, B$ s5 E/ T // SPI1_CS2 ------------ GPIO1[0] -- 17
) R6 W v( e! q // SPI1_CS3 ------------ GPIO1[1] -- 184 W. I( \5 p. z
5 e. k& V8 E8 }# _/ V, m- b HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
% [4 \7 |' O6 R( o9 E HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
$ d: \$ x. M O" i' A" S" B HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);+ L7 I/ `6 T8 g- X# l* \
: n7 O' H- J z5 R9 V7 A
//DRDY
& |- p" x7 P; z+ r GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
) _6 a! C4 g& e5 S9 `6 q0 Y1 B // CS2,CS3
$ I7 ~$ d$ u ` f2 I- {% U9 ? GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2: j2 L# Y7 \5 [ r0 S
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
: N, Q& W; E3 u( Y7 x; n0 V //SIMO0 G; N" z2 A! V% Z$ g f n. |& U
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
: M2 i$ d1 ?& z //SOMI
7 H2 C2 q7 g9 C: U: X9 W* v/ ?6 G GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI A, X) p6 j4 ^( P* n+ |
//CLK8 [' q5 ]+ R: ~0 g) K
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK# m1 s$ \& p- N7 X# _) E: C
3 O/ p4 M+ L+ P* o% V // LDAC
. z& t( l! r. g- o1 k( n+ o GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
6 ]+ W+ e+ A* j GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 N4 b, L7 U3 @& N
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 T# \; U8 G" i GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3 i( t( Y( i9 V
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
0 G4 I) h2 r w( N) l8 F}1 U& D1 k0 X% y I
5 N, j1 V( r$ o3 ?int main(void)
& V( z' \2 \5 t3 q1 G8 {{: x2 i, F" \$ ]# e0 U/ D0 f
// 外设使能
e& x- ^0 p3 g* c% J5 ~ PSCInit();
6 B9 W6 W% U6 N3 L1 m2 B& N
4 K* t. Z& {5 ]0 S3 A3 v |( z; s9 u% y ; {8 Y8 j5 d$ B0 y: |
// 管脚复用配置7 o' D- c* s$ i2 o
GPIOBankPinMuxSet();8 R8 f4 t' X5 v' B b
for(;;)
/ T: a, y% Q6 @- l; Y! U1 v7 [ {. J5 ]7 j3 f. r
SET_SCLK();//时钟正常输出
! w: {0 ], I$ {6 E, j GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2; x9 B/ H0 e* S z& f
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
# c0 v8 Z: j1 m9 @3 K4 Y& a GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN4 X6 ~$ _5 t3 E& J, u3 M8 v4 p: t
8 P5 l' e9 n/ p4 m
delay(20);
- R) k: w9 q% U& m& i1 h CLR_SCLK();, g8 L- c6 y. H7 ~
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3# u2 [& @( Y/ j, C
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3+ r* k2 H; }7 K9 X: e1 z5 h5 J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN% k) W1 b) x3 b( v' I
delay(20);( C/ ^- _6 o# c6 r) |0 G- N* |
}* g4 m; N6 j3 P# w% p% F( n
}
' s( c% x) e, Z, ?3 W% a |
|