|
|
使用下面的例子代码,不能使SIMO和CS为低电平:7 r' w' E) v5 W( t% O* K
void PSCInit(void)' J" U* v% Z" D" d2 J
{6 y2 c1 Y" _+ T
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);/ C6 m( _* S% D4 _
}
) e `& U( g& m3 d N2 n( E( ]! a5 |* W) c
void GPIOBankPinMuxSet(void)" h4 G) D1 C4 i( w6 v
{$ [' @. `% J2 I9 i- v" ]
// DRDY ------------ GPIO6[14] -- 1110 i. _; V) u- Y
// SPI1_CLK ------------ GPIO2[13] -- 46
? b1 G: ?- c: I // SPI1_SOMI------------ GPIO2[11] -- 44- b& w$ h- a2 p0 S z
// SPI1_SIMO------------ GPIO2[10] -- 43
. R0 ?# C. O& J' P0 M) | // SPI1_CS2 ------------ GPIO1[0] -- 17. ~, G s5 K4 c, |$ H- V
// SPI1_CS3 ------------ GPIO1[1] -- 18% q, T; u7 y8 D' ]8 N
! r2 E+ X* |8 W9 D" m |
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
: e8 h8 B3 ~$ g' Z) Q: f: C: k HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
T; G: n4 |% w HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);% v; ~2 Y& `+ ~* X r
% }4 g9 ~& H9 r //DRDY
2 r; Y0 ^8 n# |, S- b( i# @ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
m2 s* r ?- w; n% z // CS2,CS3
1 i: ]/ a3 j9 k: ~ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2) {3 ]' Y# z' B/ W! M# w, h
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3. {% u2 v; ~' D" h
//SIMO
. T4 D* R0 ^+ u# x' i' o) ] GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO7 X, o4 N7 D% k& B5 c% i% N. U
//SOMI3 ^, n; ~1 a% [& Y- l4 j
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI1 ^% u9 U9 E- S/ C! }3 Z
//CLK
7 f* Z5 Z" Q* Z5 u4 z GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK C! w: D1 i y6 F6 q6 Z
& {+ D4 D& M5 n3 @: F
// LDAC
s6 k/ [! J. F" w [# Y/ h GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
6 F: S2 j% }/ I4 k9 H# F! v GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN8 p; B3 @. K k! U% Y' |3 f9 _
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- N$ T2 }$ I1 d% C- s GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS36 h. h7 y2 w$ a% U/ X/ |- B
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
# @5 s& x; {; L. V( r E, J}0 d3 g2 n7 o4 W) z, U
D% d! Z- ] D2 _int main(void)
# r. C2 ~6 p' G( R/ F{- ^1 @; n- n! I5 r7 I7 L, @
// 外设使能
. ~( |3 v) S- {# _! C$ l$ V. \ PSCInit();
( j% O b+ c% P8 R* h- t' k7 g% `
" j5 q2 S9 k! T, ]8 } B- c7 c% K: X // 管脚复用配置* Q2 w: v. Y9 I2 g3 C7 \2 K1 O: m
GPIOBankPinMuxSet();; F; S- |1 q# a
for(;;)- l6 E3 J3 \9 A7 {0 G! P& O
{
+ p0 s- \; z4 u2 B) s" I ^5 G1 A SET_SCLK();//时钟正常输出
( p& F1 ^% z5 T0 e" _; d. J GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS29 ]& z6 Z* R0 J
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3+ e, }# ]5 |) P V c) M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN' O7 @3 _4 o* U1 E& b ]
- F. R5 K8 j' A' Y9 c6 Y- z0 [
delay(20);
7 F+ d. Q8 F3 t CLR_SCLK();
- r, r( ]) P- l/ O4 G GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS39 p! V* Y) l: k7 Z- u0 \: f1 @
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
5 p6 L4 s2 V6 Q* U5 q% n* G4 I' W GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
f, ^, f6 v7 T delay(20);# s S, n |8 p% c2 k. L
}1 U- x" _/ @2 N, j- e$ M4 t; J
}
+ u5 A5 g* d: l/ q- w7 R6 N |
|