|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
& t5 e" G- _8 s( v/ ?void PSCInit(void)
N0 M$ v* u4 ]* G1 v7 k{" s, U3 B% c( p# D% b$ O
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
3 m& J% D) G5 S& ~}
' x% c6 r3 Y% e' W( \) t+ v" y
- X: g' w: ]6 c6 j/ _8 Q1 Rvoid GPIOBankPinMuxSet(void)! M0 z0 u; D0 v4 m( I7 V
{. D- M/ G6 N+ Y' f; o: E# N
// DRDY ------------ GPIO6[14] -- 1111 F- K5 n9 `) J
// SPI1_CLK ------------ GPIO2[13] -- 46
" E d7 N$ m! X5 e1 D" l0 g // SPI1_SOMI------------ GPIO2[11] -- 44
, _( R! ~$ ]6 M# D. _ // SPI1_SIMO------------ GPIO2[10] -- 43$ _1 Y& s9 O; H: x
// SPI1_CS2 ------------ GPIO1[0] -- 17
# [( ^ k: N. _1 k // SPI1_CS3 ------------ GPIO1[1] -- 18
; W6 \( q- u- R0 o3 y# O8 S% ]4 Z8 e( q1 m8 n; ?5 |
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
& a M2 c* R6 X u# x: ]! o HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);; ?0 @/ o7 b& k0 ~" ?# d
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
2 {$ V2 d6 ]) O T; a" Z9 L F% O7 c# k. k( M
//DRDY
" P& y9 {! Q4 i; ] GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY) C9 j) d, n8 j, \* V$ g( |
// CS2,CS3
4 |4 {9 Q# J, a0 n) C, q: P GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2; Q1 r( J' M C( p/ S/ p
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS32 _& R! D: s! L l
//SIMO; T, A2 T* u( J! M; _ v
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO3 L* W0 B7 k$ i& r1 ?# U
//SOMI
. s t! R) y5 B1 v4 l: B GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI8 X, R6 X6 ^' U, c8 K6 U& v, l* G3 e
//CLK* Q L+ Q; {! h: N4 {7 `. F1 m
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK& _8 t' n3 E8 S) }8 ]% d
" F6 U5 W. m. D' P8 v8 x // LDAC
! M5 Y: P B/ J n GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
Z+ F! y4 j# O2 w GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* m: M; }: D' ]! t" l0 v3 I- o GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
. ^6 R( X& _# ]- g" W GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3: ]# O! n' ]7 @7 m2 I" `$ d
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY7 _& V2 |8 E5 a4 M# `1 v7 ~
}
+ L: I4 @7 }. Z5 W$ I C, h
. V- u2 B6 N3 g- e' q" i7 ^" uint main(void)
5 b! f! m/ M9 U- z{4 x/ I+ K9 f" ?) M
// 外设使能
5 F8 b" C. L( s! N( J) W PSCInit();
" U2 |/ F3 }9 C
0 S& \( E0 s! Q6 y
) N- ?- U1 z3 O // 管脚复用配置 }7 {' y* r) S
GPIOBankPinMuxSet();. b" q/ _1 q0 Q$ m" m
for(;;)
. C$ r7 w; t1 s0 Y9 ~& X {
* p v1 O1 T/ C1 i SET_SCLK();//时钟正常输出 d6 A, l" _( ~& ~: j: T
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2/ u! D2 c0 Y1 H2 q' I
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
# g D E: g' [/ \0 V l0 T GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN& _$ k+ i+ z2 G' C
& c" i9 f6 l# x& V$ B& r9 M$ G. s
delay(20);
. h9 |6 U0 p: [2 F CLR_SCLK();
$ Z- O8 z( W% I; i GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS34 n1 I$ I; z. f8 K( Z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS38 o( ^' X" Y6 F5 ?
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
0 Q& ?: Q5 S3 F delay(20);
3 _" p+ ?9 D/ u( i9 X8 h }) S m+ z+ H" s9 J* d. U0 M
}
! v- g7 s8 r+ y. A8 b; _) f9 H6 B; ~ |
|