|
使用下面的例子代码,不能使SIMO和CS为低电平:9 Y" ?, `$ R: b: @
void PSCInit(void)
4 Z9 \5 O% I) D/ }9 ~& g- C" [' [{
5 v& T$ I! r+ {( F1 r PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);+ Q) _: ^ K% {0 Y. Y0 Q; N# c
}6 R' H! H/ E/ V* Q& J0 ~9 P
' O% p4 {3 L9 R6 r: a/ E
void GPIOBankPinMuxSet(void)
1 O0 M) g4 [/ Q5 }) q% a{
9 o: u* \' f+ F+ l1 L ^7 e8 R9 W' q" b // DRDY ------------ GPIO6[14] -- 111* h7 f% o6 I& g7 D
// SPI1_CLK ------------ GPIO2[13] -- 46
) j1 R9 v0 x) y // SPI1_SOMI------------ GPIO2[11] -- 44
5 K2 Y7 }( H+ c7 v1 M6 e! I! h+ g // SPI1_SIMO------------ GPIO2[10] -- 43; M8 P6 u3 i# P0 L z
// SPI1_CS2 ------------ GPIO1[0] -- 17! ]7 O, K( I5 R
// SPI1_CS3 ------------ GPIO1[1] -- 18
5 @0 W9 k. m% x P: M
T+ [6 A P. ]- F HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
~( i; H) ^: W) i% ?: \ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
2 J/ l& c# \9 v" ~7 t0 B7 } HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);8 r c8 O* i/ a: L7 k) Q5 \
0 ?$ q, Q2 b- {3 R+ A+ @ W& U
//DRDY
y/ v- a+ \4 k% H4 j+ ~; q GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
. @+ r% u/ T/ B8 P% o4 O // CS2,CS3
8 J5 t9 y+ c: R7 y GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS25 r4 H2 V; J7 c' c3 L2 ?% j9 @
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3, W3 T; Z4 [5 t$ [
//SIMO
! [; G& q; ^ ]# v GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
4 {+ V- A0 m2 K1 w5 n, v //SOMI' f2 e2 u0 ^7 v
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI" v# L3 U9 g! L5 n! f" H; `) R
//CLK
4 u) h6 |, g1 W/ w GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
3 E6 x0 h; k5 C9 d, m D @6 z
9 X' L* H3 a/ g1 W. C( G5 W // LDAC4 S- }6 _ p; W, \: j
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK4 o. D9 T2 F# _$ z. w
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 m# h+ C% }2 H7 d: H I# u GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS23 U: U% v6 N4 l
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
( A; [. x* e) Q p* k GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
* l& [0 ?5 Z8 d) B y0 D$ x}' \# {, P, E) k/ j+ ?
* }' t" M5 q+ B+ |int main(void)9 ?* y- a, l8 H1 F
{. L k* {# r$ E, l. b. ?
// 外设使能; n" ]5 R f4 `- p* A
PSCInit();
3 e6 Y @+ T0 P6 `+ Y
6 D, A9 H2 |+ R4 d: X8 k* y+ {, J ! q, d) B( L2 ^
// 管脚复用配置( N0 F o. Z" d1 i6 f3 B
GPIOBankPinMuxSet();% r2 ^0 Y9 k1 c" Q
for(;;)
. |: R# q0 m( d& ^- f {7 ^. t( }( G1 e. U" }
SET_SCLK();//时钟正常输出
|' V- @- @3 B ^( @/ R& ? GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS20 [) N2 U, K3 }6 G( l( L+ v! m
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3- u) _4 f& w" V; G+ b7 C4 ?2 Y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN: W* \4 K0 z# l2 L' h; H
( ?; G$ f3 N" ~9 P( t delay(20);; i) G$ ]% Y3 e- ]8 U) D; m' \# G, ~
CLR_SCLK();
( Y1 w) s7 Q$ A: G w g GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS39 Y+ w: s3 Q+ t* B0 G% B
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3/ u" ?) E0 r: ]- k k- K
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
5 H$ n) J( Z- [* \9 z( `( y0 V4 k delay(20);0 V' S9 w: I7 Y0 j7 e
}
0 q& \, C* O; u" F/ \+ _}
$ v( a/ `2 |! x- z$ ? |
|