|
|
使用下面的例子代码,不能使SIMO和CS为低电平:' b4 O/ Z2 B2 w
void PSCInit(void)* S! H- o0 _: E3 `
{+ ~ z, G: N$ ?* y4 G
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
- g0 }& ~' A* D& m2 _) P. @}5 _) [; j3 y$ J1 ~* n' ~6 w
* O, c& F- l( c- ]6 L5 tvoid GPIOBankPinMuxSet(void)4 C9 E6 s/ f% x( ]' H/ X/ x
{/ ?# X( z! R8 |0 `2 r' p7 y
// DRDY ------------ GPIO6[14] -- 111
5 g% t; d$ c' K // SPI1_CLK ------------ GPIO2[13] -- 46
4 T: o S$ k& p% I0 W" ]3 ^5 a // SPI1_SOMI------------ GPIO2[11] -- 44
, K" @& g8 S/ Q) S9 C // SPI1_SIMO------------ GPIO2[10] -- 43
" U5 }) {1 r) p/ l8 V6 H4 u& v // SPI1_CS2 ------------ GPIO1[0] -- 17
# g# ?( c) u8 J) M9 ^8 t // SPI1_CS3 ------------ GPIO1[1] -- 18
4 `; ~+ M/ A+ p0 J; e: s, ?1 p& x4 R1 e8 b; G- S
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
! x$ H- }+ g; B' G( Q3 c" R HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
- M! c* c" h9 a* V, P( ~ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);5 S5 Y. ]: p- W% u4 x# s% i
: f( W8 Y. k3 P9 `0 X n' \ //DRDY
. n( z$ t$ x: }. L GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY( q/ x$ y* K3 r
// CS2,CS33 _ s: ~" ?5 P* ^% R. D2 n4 i
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2; `, j* J5 B9 s, ]4 q. p2 K. f
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
9 {' g/ X$ Y1 k* m. e //SIMO
2 L& x0 }) W) G/ K/ t8 W GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO" I, A2 k9 Z5 g" o1 v& |8 V
//SOMI
( f ]+ }9 [, n0 s/ ~ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
0 Y8 C& o" @5 y& P& o //CLK4 L% R& q- u' S4 G( }
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
' N: I$ ~! O6 u& [/ N
" Y) O6 p: m7 n$ \ // LDAC5 M1 r; K, c9 Z# K: M5 ^* _
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
$ O3 A7 z5 ]4 w2 e4 q GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
+ k) U" v: S% s: i2 J" ?% r GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
9 T) U3 C: i6 @: _ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
2 D# `8 s8 t1 N) c GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY; _' E+ m: m0 u( |) d/ `4 @* F
}, M5 L: V# ^" k) h, Z
* x( J% ~+ W" e2 T+ S
int main(void). M) P7 c9 V: y3 h, e
{
4 E7 c8 p6 o* F; N // 外设使能
, |3 P' L& n2 [! q PSCInit();
# t* U9 I; n4 Y- r* K# I! @0 b, `7 e& \) A; t7 L1 A$ \
$ e8 A! |& d/ Y! c0 { // 管脚复用配置
& k: b; `5 f6 D- {- y, T7 G& K# T GPIOBankPinMuxSet();. m, |" K1 f# r* N
for(;;)/ ^/ R( A7 ^0 i
{3 R( x" J( Y) X9 W
SET_SCLK();//时钟正常输出
: ?6 ~9 ^& A6 q& J/ }0 C+ W GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
' @* A, W8 u; W- H" a/ E GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 h! l( q3 e# X$ e. R } GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
" ~! I& r) r- h6 t! n7 {7 j# D2 t( f( [; Q$ }
delay(20);
4 w) R( |- E- q; ? CLR_SCLK();
: v7 g/ z6 Y5 k7 [: e% [ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
1 v9 ^8 e% E; [$ N) N GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
$ [/ U. w: }0 V; n6 u( v GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
- T3 f; T6 z& b, V4 s5 O delay(20);7 ^/ b' E9 Y4 X( l" ~* L! g6 @
}' a& p8 ], j4 x' C; `- C
}
) J% R7 D5 V5 l8 N% [ |
|