|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
0 b0 {1 @0 v' E! H# S2 w" {void PSCInit(void)
. w& }! l# C M5 j# P{; n1 G! X) g9 O/ r4 F" d' V
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
- {4 Y' g. w- g6 x) ]5 C}! |. E+ p5 b9 T% o
* \1 }6 j7 c3 e$ Y; wvoid GPIOBankPinMuxSet(void)6 K, ?7 Q N1 a! d
{
: O0 \1 j8 n& @ // DRDY ------------ GPIO6[14] -- 111
1 u* a9 t5 r1 u0 A // SPI1_CLK ------------ GPIO2[13] -- 46
* }4 F. |' C( z3 S- o // SPI1_SOMI------------ GPIO2[11] -- 446 f1 b6 F) T6 ^/ H( Y
// SPI1_SIMO------------ GPIO2[10] -- 43: R. H4 J. X6 L5 l! G+ _
// SPI1_CS2 ------------ GPIO1[0] -- 17
& C1 I% h# d" S7 R" n1 R9 V$ B // SPI1_CS3 ------------ GPIO1[1] -- 18
- h1 ]7 @1 k7 h. A3 S; w
, ~, y9 Y3 n' l9 j8 V HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
2 j3 h t! ?$ H. k+ g HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);& G; Y3 L) X' l) M" g
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);( B* I9 L4 W& B* X. X4 Y
0 F0 s: E! X: _9 h* V/ E+ k4 a
//DRDY0 }* V" q! `3 k% n
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY. w0 B; t- w% k A
// CS2,CS3
# M/ k$ k6 W, U GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
1 \, F% `; Q* W7 X1 w q, e GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3: p& F/ R3 n& z8 Z) B3 j
//SIMO
+ B6 {9 h! s) q" C1 g7 H/ y6 H GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
4 m( }# q8 }! E# A0 k8 l# ` //SOMI: A# D8 f c2 @: N W
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
1 d+ q5 t, ~, w! L. S3 w) [ //CLK& p [7 v7 F1 I% q
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK7 o0 G% u& h8 i L" Q) n/ M
1 X* p, W! K9 ^3 ~
// LDAC' B: Y& ^+ W* e
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK3 P9 ~# X) ~: f3 x. E
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
! m$ [' `2 l) P7 \3 H$ K GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. f. N% U0 l. m7 Y; y* V GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
6 M% Q% p, g) F' H8 y GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
9 I% {9 N o$ z( v7 N1 s/ x( U7 q}
0 J. t8 W& ^/ \6 Q! a
6 X9 p% K- f( M! }7 O4 {3 rint main(void)
9 _ X" W+ T# B, D0 ?( G1 `{; N r6 t7 t4 h
// 外设使能
6 W5 l# `8 d( s) M PSCInit();) G" w9 i- b% }: q: g/ F
, R2 J; Q; F5 ?& }" i 1 t/ |/ ^: z. A, z
// 管脚复用配置
( y/ e7 V, l+ `$ `: p( L2 {3 S GPIOBankPinMuxSet();2 c; N B$ [; D5 H+ s$ F6 f
for(;;)* \# e, w$ m1 N2 g
{( V) L: d* H" W0 B
SET_SCLK();//时钟正常输出
9 Q Z+ _" W# R" m& b GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
* Q6 s( M9 V$ B: @' Y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
, A7 Y# V. w0 b4 @& A& K$ l GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN) ~0 i* E* c6 ~! y7 S; Q
/ Z% ~, d# [7 }/ o$ W; s* { T delay(20);
# L! L) e1 o! Y1 x2 _ CLR_SCLK();4 s6 [) m g1 K: l! _8 v
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
" l: k2 b- W, y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
* y- W$ w# ]( E) Z, b GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ A3 |$ q; ^$ a delay(20);
0 v3 ]/ D c5 ?) R9 q }
! f2 Z+ X+ Z0 |. c9 R}: w8 L# V% Y @
|
|