|
|
使用下面的例子代码,不能使SIMO和CS为低电平:+ K; x7 l% w8 q' ~( }
void PSCInit(void)4 d( H5 O: `8 x
{
$ n8 C5 u) s e PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);2 R. ^% h/ f: L6 L
}/ ^/ ^% _9 y& `, B( G; b2 n( X8 Z
5 |8 j/ X N, i$ O3 gvoid GPIOBankPinMuxSet(void)
& ], I3 G, W7 _& N( s{8 g) I' P# V# V( E8 D, B% T
// DRDY ------------ GPIO6[14] -- 111
- e$ @7 C* X, J4 T // SPI1_CLK ------------ GPIO2[13] -- 464 W) e6 j' p) t
// SPI1_SOMI------------ GPIO2[11] -- 44
! u0 X$ ]7 A; z4 |& H3 J. O // SPI1_SIMO------------ GPIO2[10] -- 43$ ^1 N J" J- F0 P
// SPI1_CS2 ------------ GPIO1[0] -- 17
3 Q3 b' ?* R1 [# ^7 y // SPI1_CS3 ------------ GPIO1[1] -- 18
& Z, ?4 k4 t, X' Q2 Z* D/ |: z6 z
; Q3 t7 G5 t, u8 q( T1 X, r HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);/ e X* T1 O, ]& d) f" |
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
2 R |0 s$ R* R3 q) Z( \ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
$ H% v2 b6 x) T/ Q
1 k2 l5 g: Q3 c2 Z- M g6 P2 R //DRDY
7 K5 W/ }2 N, Y; e, f; \ V GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY: c0 C9 ]1 W5 G* Q
// CS2,CS3, Q% J9 V1 }! _' V
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
. u! F% P, [! O1 ^0 ~6 C. R9 g GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3- ]6 F& M0 g* H) X4 M
//SIMO. y& n) V3 n2 F6 x; L2 x
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO( l" Z9 p9 D) f
//SOMI
! K. [' U" k8 w Z- | GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI" L2 B3 z' l5 x+ i3 D& q
//CLK
$ e |# ^& x0 I GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
5 G3 K6 y4 M8 [) u0 [9 M1 C! \' d# X8 t8 a% q
// LDAC+ F+ M; v# W3 t5 c
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
& [2 N6 E4 r' |4 Z# ?! g GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
( q, F& m0 W1 J GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2/ v$ R* x: u! B8 u7 P8 {- [/ }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
5 M4 ]- S8 u! f+ c; w9 p' U) n9 E GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
- @. b' d# O; n( U' U; n4 \}" W- I# d9 U! l- q8 |+ X; R
S4 z, A0 k2 ]5 ~4 N( i' Z
int main(void)) ^$ x/ _$ z' { ~6 A4 T7 k
{
. T5 s9 O; B, E6 |* B // 外设使能
" Q, \2 F$ {) r7 L' J0 N PSCInit();
3 I- L- @; M$ A. ^1 g0 v8 X3 p; Q1 ]8 s/ o
% l9 K3 m, k( s* u9 B // 管脚复用配置
+ O% _! K% h v GPIOBankPinMuxSet();
4 s" q, _5 M1 q# w5 m2 B for(;;)
g! ?* F* F0 t; v8 `+ K5 c+ p P {5 w7 q: l% l& Z2 w/ N
SET_SCLK();//时钟正常输出
. i8 {0 u7 a5 c5 [ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2$ |0 M2 @6 @( z" ?0 g. G6 ? ^" R
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
" ]( s, a2 z) ^5 e2 l GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN/ [- m5 e) k2 i8 O$ W! k; T
$ a2 \2 ~0 k5 r9 V* ~" p0 Y
delay(20);
; G! K" t. {% m$ f* H CLR_SCLK();
/ @6 K( H# U- q2 q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
% @4 I& p: d" f GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS31 ~& z" U6 N7 f7 S& g) f3 s6 {9 R6 ~
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
J) |' t9 j0 V4 `; @2 ]* p1 | delay(20);- E% O5 @) s: k' d8 h+ c4 U0 G, Y5 T
}' N& D* C+ }% G4 C, _; O
}
2 {$ T! H$ p: } |
|