|
|
使用下面的例子代码,不能使SIMO和CS为低电平:7 u& H7 `4 ^) a( U) ~+ z* S
void PSCInit(void)
$ \) [: E1 p2 S% x3 ~{/ d+ |) N" b# n3 x
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
% V* q& J7 v w5 y9 b! U}) S) `7 J2 r0 g6 s2 ~: q
6 @5 B. E' t2 `9 Q8 x* [$ `4 nvoid GPIOBankPinMuxSet(void)
$ Y( m8 ~; A) T: b4 O{
e, p9 S; M9 i s( j) G7 k // DRDY ------------ GPIO6[14] -- 111( }: c% d; t& L: @2 ~
// SPI1_CLK ------------ GPIO2[13] -- 46
: L% g( G4 \3 A // SPI1_SOMI------------ GPIO2[11] -- 44+ X9 i- I# L6 q' N, s. j1 k
// SPI1_SIMO------------ GPIO2[10] -- 43
' T! P5 E2 V, H( Q) X // SPI1_CS2 ------------ GPIO1[0] -- 17
! S# R& s, Y1 l& W% o // SPI1_CS3 ------------ GPIO1[1] -- 185 P6 E1 I4 u4 [
# ^) _2 f! X5 t4 G
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
$ u4 U: T: O% G% d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
6 f) b; b. V- e HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080); q: [: J- ]3 ]9 @3 e8 L/ |# N
( C# H4 x7 s! W+ I9 m //DRDY
$ n; U8 b5 G( m+ w; B GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY& s% j: Y" g0 ?3 ?
// CS2,CS3* N5 M' d/ |9 b2 x6 A# ~5 s, U
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
5 [! R2 D# N: G$ P3 g3 B GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3 ~; q3 i$ l) h3 n
//SIMO
: b! Q" g& b# ^& x ] GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
( v/ j, n4 H7 U2 T //SOMI
1 R8 R! B& B3 h" q3 P. b' } GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
- Q2 y) O" C3 @" {: w //CLK
( ?$ T4 k- F3 b7 {/ w9 I; n GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
: P. }5 }& ?+ U6 |0 W
4 q$ ~7 `" [6 ]' y5 a // LDAC3 A* u" R$ {/ H* e7 I- U
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK5 M% M9 i" E, y7 S, H
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN# Z/ [4 d1 h6 r; c. w9 O( d* f
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- m/ O X# f7 |+ j8 G" n2 ]8 }" J- u GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS38 _) z" W( {9 H, Y. U- l
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY. f4 T M; i b4 ~0 |6 S3 a: ^
}
E6 l2 i* H) {! ?- z- Z9 ~- w* f% M
int main(void)4 _! f6 x# f; b+ k
{
7 i1 r- P$ m; l3 J! Z // 外设使能/ {* `/ r4 K2 C3 C
PSCInit();* s9 z1 _# q) L* `6 _+ {
. E: V+ U8 ^1 v4 {3 Z
; c% L; y: |4 ~2 ]) S // 管脚复用配置" ?; V7 |! x% ?4 ?) D' {
GPIOBankPinMuxSet();
3 A5 ?( o0 \, q: P2 O8 u for(;;)
) b# h0 g/ J q5 B) U! B @- F {8 W7 q: t* T' b% r9 \5 L* r+ h8 h
SET_SCLK();//时钟正常输出
! j9 ` M) i+ z3 h GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
! d9 e/ u& v& q: F/ N+ O GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
! M+ T1 d, F | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
* \, X8 ?& N6 ~4 S
5 q! z% b) D. u( \ delay(20);
7 U/ W# S8 G9 Z) |0 Y, S7 M/ ?7 d CLR_SCLK();
) j3 P5 E! O: |% s6 T4 z) ` GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
O. u; u0 X# s' ` GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS31 O, t, b( F1 b
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 R9 J4 d# R; n( `* w8 \2 } delay(20);6 a8 |, T# _- |: r# X* f
}/ p$ e" i" v* W. C
}
0 s) J) h: Y; ?2 T& r |
|