|
|
使用下面的例子代码,不能使SIMO和CS为低电平:0 ]9 A& F( V, l' \9 {' L
void PSCInit(void)
' b4 S2 G* G( }" J( L6 ^( `* R; g{7 Q% h4 W) `) q" h5 |: ^
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
0 I: z4 N* A$ Q- e}6 z- ~( W! Q7 z6 }) W
0 T# T' g! f9 a+ V
void GPIOBankPinMuxSet(void)8 c+ ]0 M& E8 g9 }
{
' I' z; d% Z& k // DRDY ------------ GPIO6[14] -- 111
5 R+ `) _# V } // SPI1_CLK ------------ GPIO2[13] -- 46
4 y5 I0 K3 @% T6 E) e // SPI1_SOMI------------ GPIO2[11] -- 44
2 k9 w- s; n' f // SPI1_SIMO------------ GPIO2[10] -- 43+ P' ~# R; f7 N, ?- z8 f8 o! F
// SPI1_CS2 ------------ GPIO1[0] -- 17 K2 e9 o. l& P% J* } S1 `- l
// SPI1_CS3 ------------ GPIO1[1] -- 18% Z2 b1 S5 {9 F
, {/ A4 x( y" P0 \
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
( i5 Y' ]2 F3 S$ W5 R' l: Q; F HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
6 p4 o, P, M9 N! h& k% [ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);) [# w& f5 N U" X4 X
, C. {: I, \+ O+ L" u; X: h
//DRDY7 @" N. V' L( j Q6 o
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY5 J) H# S+ v8 ?; D1 E$ l6 v( P
// CS2,CS3
2 I& c8 \& {% m, I8 v GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS26 x' \4 k0 K' R
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
% I9 i3 ^' W3 m, i2 n //SIMO
3 w- H# H5 A# h4 M0 i- N* u4 f GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
o- I' M3 F) n9 E8 K/ }1 J9 C8 K //SOMI
]9 t. q( D% x; z$ Z* T2 z. b8 C& Z% F GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI. `2 s# m! I$ j9 E$ n& B, ]
//CLK
1 u% ~7 U$ Q8 B( V- Z+ B GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK% J5 Y" c( j4 T5 ^, Z9 | l! Q
& v5 _; ?6 i, K! P% C! g
// LDAC: W/ L- w2 i6 L" H7 Q
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
$ P/ L! C5 n2 M2 r GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! P1 y: t' w8 x! U
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& l4 W1 E" [* z' d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
8 H2 ], F2 A0 N8 S3 r. @ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY4 w1 B( c, I& s- \2 y
}8 k$ y2 M$ x" @) D
6 o# X4 F$ X% a4 u! v5 p8 p
int main(void)3 g* g v5 o, V$ E7 o" s
{4 @' }0 L8 a# k$ Q
// 外设使能
! ]9 ~) q1 E, R" ^ PSCInit();, N) B7 x9 c4 E9 p% {) _
6 s+ C- K, p& Y' |) { , W( b4 @, A: J5 B6 V$ F
// 管脚复用配置
& p6 d$ h, C) [2 L GPIOBankPinMuxSet();! w; b7 V) v6 h2 j
for(;;). ?7 ]% D0 G9 v% }; S
{
) j0 ^6 {$ n% b$ r' a( `: }) Q' v SET_SCLK();//时钟正常输出7 H/ j- Q4 x3 e& {
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 y7 J2 W9 |+ i6 G/ k' o
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
8 T! o+ s' H& g# G GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
3 ^/ E% a- o7 d& }+ ^4 p- D
. R4 E8 a. V# g delay(20);
5 b$ Q2 L" r0 | CLR_SCLK();
+ A! P7 L9 N& w3 P GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3& f2 ~8 G( f0 M' v. G! Y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS35 O. D- H0 h9 x& J7 X$ y
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
) |7 f! D" ~. _ B7 w delay(20);9 m8 A1 D, z4 S7 Z0 |* ]8 }
}1 E) I( E* ~& l3 @5 e" |& k
}
& m: F" D5 K. x" M P5 F |
|