|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
. U8 z. }' | P0 Dvoid PSCInit(void)
, g* @2 J X' v6 m6 v5 W$ t6 B2 l{ q: R. K+ r9 c
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
4 ~2 C% ]. a2 t+ Q) c. Q9 C/ m}* \: }- G4 v5 c- q, m
2 P! _, X% d: {; h0 C P4 l2 ^void GPIOBankPinMuxSet(void)
$ |$ l% C4 j. B, q% @3 i* `" s{5 j; J, O* v1 k; c6 w5 y8 ^: T+ c
// DRDY ------------ GPIO6[14] -- 111
% f0 j: C) K1 X2 ^8 ?; p Z // SPI1_CLK ------------ GPIO2[13] -- 46" H( q9 a7 @1 y& g
// SPI1_SOMI------------ GPIO2[11] -- 44
; p) v! ?1 Q) t+ @& _ // SPI1_SIMO------------ GPIO2[10] -- 43, I9 B- w; P8 }7 }
// SPI1_CS2 ------------ GPIO1[0] -- 175 D% M2 G" {. s2 |* m7 w/ z
// SPI1_CS3 ------------ GPIO1[1] -- 18
2 U% D7 m9 \0 n0 ~. g, G6 k Q, S; P) T
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);" H# F0 |* p2 r* B4 C
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);5 M& |- ~/ g# G( g
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
/ P9 ` S8 }& T& T! ?1 A: s0 C/ z; e1 ^/ F# z
//DRDY! E/ w* v* S1 P4 {
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY; v, W; z1 }3 Q
// CS2,CS3
6 F' U( P! L, k9 Y7 Q/ o GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS23 h8 J' A! @- q7 X; l
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3 X+ z7 d$ v5 |5 |0 r) U9 N' \
//SIMO" a1 P8 b4 z0 t9 u' j( _" \% x% C
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
. }% Y8 y8 a2 n8 g4 L1 [ //SOMI' q" V/ ^' ^$ W/ {$ ^0 Q# C8 J3 j
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
* [8 @2 B- Y: f9 h- Z //CLK6 N! z& z7 c' Y: x; v9 L2 o5 o S3 `( j
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK1 R0 t; ]" [: p3 W) g. C* l2 ]
* B# }2 D. h1 ]# x, I/ D( v // LDAC
1 L9 _6 l. u* R, X) Y6 I GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
3 i4 n. k9 _0 ?9 p1 Y$ V GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
9 l$ V# S" B9 A! T* r( v4 h! G+ e2 n GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2 N4 ~! Q, V+ y2 C. `! W
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3 `% B& c$ b9 U, l, b; j% J, g
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY2 m2 I" r' A. ~& F0 h, c/ |
}. K0 _9 ~, c+ ]5 D- l& `+ b
- A. g8 U; f: q
int main(void)5 S4 j/ b5 G4 n1 U
{4 Y; y1 R; n6 j
// 外设使能 Q9 P; X8 h* @+ \4 p
PSCInit();
7 K {$ T4 Y, |3 k$ N; T
9 e! z# b" R2 n5 i0 w ; U5 n" J% r% N$ `5 Y: x# f
// 管脚复用配置/ k; ^2 Z/ D( O {5 V$ f* f( a
GPIOBankPinMuxSet();/ y- Y( E4 Z6 [/ J0 d& w+ N* s; E
for(;;)
0 x, v9 C) r7 W5 e4 h7 c+ n {- Z& {/ Z5 u3 W- q% [
SET_SCLK();//时钟正常输出) g* b% a' \. m
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- Q- L! v& v2 |3 @' R3 a2 N% W& } GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS31 F- f' V) Z$ _& F" |& c, ], K
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
; p8 g. b) h/ L9 ]# p% P% N) ]7 z, V. F3 F) d
delay(20);
0 Q; ^# M+ x8 p9 _; n* c2 B CLR_SCLK();
4 c9 ?+ J/ m; @# n _ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3 ] q- U& o; x0 x5 d. n! R4 x3 i
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
, d3 c2 E( c7 j# |. M5 e1 k" i V GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
7 n. z: P# A4 P; m1 V5 ^9 v, C# S delay(20);
$ u G- D+ \4 m J2 [4 d }+ G9 H8 ]: }8 ~5 r: J7 Y; S, ?4 w( y
}* a- B: H3 P7 A2 }9 u# X" F
|
|