|
|
使用下面的例子代码,不能使SIMO和CS为低电平:2 [* T6 q9 g+ M. t
void PSCInit(void)
/ ^! p3 v/ R9 V" n{5 q& [7 G7 B# z. r
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);2 Q F9 n" [9 E+ o/ `/ ^
}
1 F" Z( u' s. R y2 E% c0 i
[1 j9 {+ V9 m* p) _( a0 y7 Qvoid GPIOBankPinMuxSet(void)0 H! B! d, K8 \5 u; @
{* L7 |7 `( w: T- O; `/ Q! c
// DRDY ------------ GPIO6[14] -- 111
, V i& {& v( a // SPI1_CLK ------------ GPIO2[13] -- 46
$ y! Q. y- ]- M* f: e // SPI1_SOMI------------ GPIO2[11] -- 44
$ y6 K c1 X! [, O. A4 K- V // SPI1_SIMO------------ GPIO2[10] -- 430 {; ?* u$ ]8 L! y9 c P
// SPI1_CS2 ------------ GPIO1[0] -- 17/ M2 w; Y/ c3 t; z! |' g B, O
// SPI1_CS3 ------------ GPIO1[1] -- 18( R i# ]( a7 i$ B9 [/ u
. J' i, D; a- F2 c A; B HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);: Y6 F/ c5 ?! x T
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);- \* L: ~! O" |7 y) T
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);/ a- Z! i7 Q& B9 v
, g# ^6 j) d$ O9 S8 e) Z! p# N8 v //DRDY3 T5 d+ ]# h" Z1 W6 i1 }% Z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY4 q( U6 a; ]' L( v# |
// CS2,CS3
/ J6 k: D6 Q$ }$ z' j5 z6 Z5 s GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS28 z+ s: P @$ h7 n+ Y4 _5 C6 V' }
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
6 B! v0 {& D. ^7 o //SIMO
5 s5 n5 y7 k* _ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO- Z1 ^3 r4 z/ |( B8 o
//SOMI
$ x: K3 k0 Z- A5 m. M3 x GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI+ q: V) b+ t) r+ \
//CLK5 w2 E$ r9 M- g0 w
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
' U5 ]0 F5 u: F* N9 `/ V6 K; J) X4 j. i6 ]5 R. \6 F
// LDAC Y7 \4 _3 R6 z' }* u
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
" S* P& F( \# l8 J# S5 Q$ M+ S) ] GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ Q/ v0 J* t/ s+ v GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
6 H; \8 G. I# E! Q- }" F# [' S GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
( p! h( t' ~# Y* N( P' B$ m x GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY( @7 n. p. C/ o
}
1 a) X6 c- g/ D3 w8 U
, e0 r" L9 y% Wint main(void)
; o3 w1 J; h# k: f9 ^; z) G{8 T7 \( Z! q4 P
// 外设使能5 f7 R/ A h* A$ ]6 a# U5 v' i
PSCInit();2 N C! s; I* i' }* I
; v5 t! x4 G7 w9 t' h0 e
^4 b- _' F6 H, Q/ x // 管脚复用配置% \$ j( m' e' ~4 j; m7 t
GPIOBankPinMuxSet();
+ b+ [. t5 g# Y for(;;)- A, N# Z* q' p7 x4 m
{0 q8 ^% c1 G& H) {2 O
SET_SCLK();//时钟正常输出9 `" Q) h8 i0 c: E5 k
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
2 @ o7 d4 u2 Y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
- U6 q, Y+ v' A4 k. y7 L1 q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
5 j' _4 ~( p! A# ~9 x; {& y7 q0 O T! q9 ?4 I" i* X
delay(20);
# `' M4 _6 J7 u+ Y; W7 s+ H CLR_SCLK();& c0 w5 t; g$ |9 |# ]
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
7 c) e6 b/ c" T& J% t3 _ @ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS30 \* y1 [' u- W, s
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN+ }1 O9 f- P* Q7 h/ \
delay(20);
; I- s2 w6 h( V; U7 Y& V }& s% z- X* m* @9 i, `/ ?
}, N0 n) g4 K( [( F3 x1 B7 ~' P& c' y
|
|