|
|
使用下面的例子代码,不能使SIMO和CS为低电平:9 l0 v- t- |6 C) d6 `
void PSCInit(void)6 L+ T0 E+ p! q, k
{
/ i% o5 S( M; e7 `, i: p+ V. H+ R PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);8 T/ z/ E& X( u) y4 L) @
}, W: ~1 v* q. i
! U% t( M2 i3 j% t- {void GPIOBankPinMuxSet(void): S7 j+ J/ A1 m' c, S# F3 \
{
3 z' d4 Q* i. i // DRDY ------------ GPIO6[14] -- 111+ l$ W. |0 k* _4 o( _
// SPI1_CLK ------------ GPIO2[13] -- 46% Z8 Y$ `, _9 a
// SPI1_SOMI------------ GPIO2[11] -- 44; I m7 ~$ l% F
// SPI1_SIMO------------ GPIO2[10] -- 43
6 f5 V% X9 b' ]5 ?2 H9 ~6 o2 G3 c // SPI1_CS2 ------------ GPIO1[0] -- 17' B" r3 ?. E. \. @" `: _
// SPI1_CS3 ------------ GPIO1[1] -- 18% S9 z, z6 P3 j j
5 S- z4 P O8 ~6 J7 t4 H% O- e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
Y; `, F: O, `' i. {2 p HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800); b0 ~5 ?- e! @3 q+ n
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);/ u, L& l. E7 L. c( Q2 q
: P4 k5 {* ~" I7 [" P //DRDY
9 z% U9 b7 S9 m7 t$ E GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
7 |9 U/ A0 O3 h. d5 o) g% c // CS2,CS3
) ^2 \: M/ Z# c- c2 S6 K5 D GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2, [. E( M/ \& Z% g! u0 O$ _' Z
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS39 M4 [, f. [* J& B
//SIMO- t/ Z1 |. n+ t' `% q, l
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
; Q! N5 X B" y3 K7 o/ ^$ m //SOMI
- g, M Q% l6 k0 O5 |( {; U GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
7 Q1 u, |: Z7 w: R. @ //CLK
; |5 L& S$ k: [5 e" i" m0 ~ GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
( F' {& |+ U; b) N2 \4 }, T
, [) _1 N! L( K8 l // LDAC2 O" Y! t9 O5 y% e- K3 Z
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
4 n4 _" x* d. m. c" v0 V2 Q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 c. h/ `2 j+ q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS24 h& Q( @- w9 _/ ~
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
# R0 r4 L! i% B! f$ n GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY7 \6 a t- p2 S3 x1 @5 k5 u
}
1 K, x/ d. ]0 c: ~# U3 Y% d, j" J; z
int main(void)2 K/ G- P# B( H: ^- C
{& G6 V+ g1 y8 @& m+ i
// 外设使能
- l$ \9 |: f! q PSCInit();7 ]1 b" |0 y4 a" R
' G6 h; O' s/ p. C" W+ Y6 d ) P. G( B/ ~; ]' I! `7 K0 r! f
// 管脚复用配置: p( _+ z7 x) ~4 J8 u( p
GPIOBankPinMuxSet();. C& R' p7 q% O# p/ i
for(;;)
: M, \7 n& {- U* _) N$ X) L {
" H( o1 D0 K, X! | SET_SCLK();//时钟正常输出) f) Z+ a' J/ |$ P* l( O# a8 p
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ ~, W+ s' h. ~- G1 N5 I3 N3 u; ?
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3) |1 a+ S& f% Z* Q1 B
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN' h3 B# Q9 P1 w, r
. H, Z' s* r E3 B1 w. p
delay(20);
5 u, u5 S$ o& B+ F8 k7 [! g CLR_SCLK();
) m4 g9 x3 U# d$ k! Z; [ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
! ?+ \- L }* D GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3# p5 o* f/ a _; g# B {
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN. ^/ z: D v. g0 `1 i \* w" V
delay(20);
' a- K+ Q* H, p9 ?1 w) N, F; N2 C; x } X8 \; T8 r! B y
}
; u- D+ y4 {$ J" c |
|