|
|
使用下面的例子代码,不能使SIMO和CS为低电平:4 V2 g) ` r* M1 ~: j- Q5 i9 m
void PSCInit(void); j+ B$ |, G7 g7 [/ O' f
{: \- S" K: ]0 y1 ` F9 B& f( f& I
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
) B# l: o4 ^. d4 f# u}6 p, k L2 D* S& ~
' z2 d+ ^$ B6 v4 L$ Y) V, N% [( n% \7 T x
void GPIOBankPinMuxSet(void)
2 T" }6 C8 @0 N" o7 B4 B! @8 d{
: y7 U# }5 g$ q' U3 ]1 j, j+ ` // DRDY ------------ GPIO6[14] -- 1116 y( O9 l. @% c
// SPI1_CLK ------------ GPIO2[13] -- 46
( T K# ]+ S, U; [ // SPI1_SOMI------------ GPIO2[11] -- 446 c* y3 }# x6 I) I e
// SPI1_SIMO------------ GPIO2[10] -- 436 G0 Q% R4 d) U! u" a2 e
// SPI1_CS2 ------------ GPIO1[0] -- 17
' e7 _- O9 `( ]& Z // SPI1_CS3 ------------ GPIO1[1] -- 18
, u0 g! i6 P, K+ M6 p2 c% e" q
# F* V0 y0 `9 a5 f HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
+ p9 B7 B8 W3 D0 T/ ` HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
7 U7 b1 w0 t; q3 I& o; O1 a: ^ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);- h6 }# o/ B* Q4 x* y C
# v/ r: Z1 y0 \" b
//DRDY( z" j: {9 R3 Z" I7 @- C
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
0 [, k6 Z5 T$ J6 `# X // CS2,CS3" ]. @ |( J! r% O8 t- w
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
* |' h; s( ]1 f9 u3 z% } GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS35 _1 n8 z$ Z2 b) j0 s
//SIMO5 c5 H8 [; P0 ?; \1 K0 w& x7 C
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
- r/ ^: \" p5 c _$ K6 q4 {" X //SOMI' M! S+ {" Y' q2 o
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI' |3 M/ e/ Z" M2 E- p8 b% w
//CLK
/ I& @8 p& n7 }3 w0 Y7 {. p GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
# f5 {. Z; v* D2 W, N7 O% a+ V; s# a: x8 B( D; B) S3 x
// LDAC
2 N& R0 O5 ?! u GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK" j1 Z$ E" B5 p, u2 g
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN5 s3 t1 P" B: f" z3 @
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS28 b! m6 y4 `1 `' P4 d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3) N0 E' s1 K7 R( X) Z" {
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY# s! c0 j1 s. x" J3 a6 [
}2 a6 C. C' L: s$ m2 D; v
8 j" y% R& T- o* C; W1 |
int main(void)) L; E9 F) j1 y( W2 j9 `
{! t. W T& O$ I3 J, G) k. j
// 外设使能
1 a8 _1 j% T7 N G, X PSCInit();
- O# q8 J7 w9 _& |2 \( Q4 H
( V6 K+ H z/ e2 i: a
! d7 ~' g+ J5 X. ~. a // 管脚复用配置" e$ B+ B+ \0 Y, v
GPIOBankPinMuxSet();
- u& E. E3 R n' e0 |; ` for(;;)$ `2 Z+ c) r9 t7 }+ e
{5 y. w- B! w# l. F. b4 s& Y7 w+ N
SET_SCLK();//时钟正常输出
1 ~ j# U& P/ s ]! ]7 B GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, N# w' v$ n9 h/ {5 O P GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
( g& A$ f! e: a: Q0 B. ?2 P3 x$ W GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN/ S# C6 @" @1 @' Y& Y
! Z, N) V! Q' Q- m! W0 g; o$ e' d% Q delay(20);
|) W2 C) j5 z1 t! w6 J5 w CLR_SCLK();
" ?) Y3 i2 {1 c* Z% L0 u- ` GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
. {( J A: S3 v; k+ [9 @% Y5 Z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
; d8 g: l0 D5 ^1 M' Y! U% C7 m GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN o2 b! h) Q& o" _. x5 \2 O, F
delay(20); N$ w1 t7 y: b% n& ~2 w2 ] A
}1 C) A3 A. P5 d& V8 `
}9 `* |9 ~! K3 y- J0 t3 W
|
|