|
|
使用下面的例子代码,不能使SIMO和CS为低电平:& r8 \: P7 C+ n* P
void PSCInit(void)
* T O) D8 ~+ z0 `& J8 v{
+ s( X( Q& T% c PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);! F$ e4 |* l, f; x- B4 \3 P9 U" j
}5 D t- T3 j/ W% [" y# A; h3 f
4 k7 T7 i' Q; {; h7 A8 s
void GPIOBankPinMuxSet(void), k# X& I5 ~3 x; l# c( V6 P$ l: r9 }
{# I' S, p, O" D! Q1 _, Q
// DRDY ------------ GPIO6[14] -- 111
9 `; n- e7 t7 {6 R6 i: _ // SPI1_CLK ------------ GPIO2[13] -- 46 P1 f' H/ G9 Z5 m3 V8 S
// SPI1_SOMI------------ GPIO2[11] -- 44
4 z6 _7 b( E% X9 C/ R. I( N // SPI1_SIMO------------ GPIO2[10] -- 431 w! @5 T9 \" ^) ^& Q* ^& q
// SPI1_CS2 ------------ GPIO1[0] -- 173 _+ g7 J. j* u: z; ^# N+ X
// SPI1_CS3 ------------ GPIO1[1] -- 18) Q0 q x' B( b0 G# f" ]
# P w3 ]1 W+ H$ A! ]( X! P/ |( p
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
. b. S; k: }+ y% u, d HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
S' G5 `5 L0 ^% R HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);% {6 j S1 v* a4 A1 f9 T6 T. u$ z1 I
1 x) F' d* L: u' Q! p2 ?4 l; r4 \
//DRDY
y7 U4 r! y- \( e& z GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
1 z( q* F- [$ ^! o" T' R // CS2,CS3
) q( o. n3 r; y& j GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2( B) h) l7 V. G# ?3 P% V
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3+ {1 m* @) v- z
//SIMO! V. t# h7 ^: b1 q; E) l5 m
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO* }! D# H- ?6 s
//SOMI
8 v* @% x8 k% j* Y2 { GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI p! g9 H0 Q2 Q: o$ W
//CLK
# S& K/ `. a1 l. V; _0 | GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
7 p) z( H7 `. i4 x. H
) ^2 Z) ] X2 Q4 ~ K) U // LDAC
4 k- D9 g# K, h# \9 W) @8 X5 T7 h GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK. Z# ^$ {8 I7 ~
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' _! [4 r& o$ A$ j x GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! v$ \$ D, y, x& \* X) L
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS38 |& t8 W6 d6 a& M- ~
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
" W6 h# J0 n9 z( j# A9 ^7 A( X}; i, Y3 U" r- w8 c! l# C7 H
0 U a& G7 S }7 g& K p
int main(void)
, r4 D! |3 F- m{. W# X( G% P7 Y6 ~
// 外设使能
7 w% ]' M2 Z" [% C: x2 _6 U PSCInit();
: W% B/ }3 K7 \
% `5 n+ h+ V" q' p
: o/ M5 C" e, l9 n) O7 [3 E // 管脚复用配置" n9 i$ t6 Y( f i
GPIOBankPinMuxSet();" [* T. w! m! S7 [# L! D9 h, C7 o
for(;;)
5 x, z+ B! V! j: k {# B$ S9 ]6 K- Q, H# O5 }& a- h
SET_SCLK();//时钟正常输出- f h/ E) z- r8 h* ?3 g4 r9 @+ W) |
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2" M3 c! H) {8 ]' Q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
' _: v0 ]8 u9 R% ^: T9 K( R GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
1 l2 T8 I$ W" `* t# N( a4 R* @4 G
5 D$ c8 j O# q! @$ v$ k3 h delay(20);/ _1 ]" |! f2 o
CLR_SCLK();3 ]' S# h) |) F9 X* q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS39 Q# H0 |1 R a7 C
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS35 l' ?& X" Z5 l t, V2 V6 a- [" J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
- Z1 l5 d8 B6 u3 U delay(20);
: E% C9 x, @+ [( _+ |4 _. J& U }5 b1 F6 v: O$ B
}
. J; s9 L% M: e2 w7 v |
|