|
|
使用下面的例子代码,不能使SIMO和CS为低电平:7 Z! x0 [) I) }6 |
void PSCInit(void)
1 k- z: L& l+ V5 N" e( Q9 r* @{
, r3 k( c9 l0 o+ t3 f PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);6 \$ T% C7 M% \ ] x
}
! V1 ^ c. Q& Z& U2 g4 z
1 e' g5 e- f+ Rvoid GPIOBankPinMuxSet(void)$ ?; o2 S0 e$ E9 X. b
{& i v- k8 t$ J5 O; M: H
// DRDY ------------ GPIO6[14] -- 111
/ _, j6 D6 F0 G9 y // SPI1_CLK ------------ GPIO2[13] -- 46
7 q: V; n* I! p4 S // SPI1_SOMI------------ GPIO2[11] -- 44
% G: e- B4 u& {" h" |1 g // SPI1_SIMO------------ GPIO2[10] -- 430 X* \" l4 p/ s! g( h5 k# n! H7 ^
// SPI1_CS2 ------------ GPIO1[0] -- 17
& x# w1 D6 k& B/ { // SPI1_CS3 ------------ GPIO1[1] -- 18+ P m* P n6 R2 ^2 a8 K9 e
) L) ]5 \2 E4 {+ _0 f HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);- S8 q+ E! ?+ ^# i1 f' u. D
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
# s# d N: [' }! z7 i/ ?' b HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
- Y. X' u2 L) B- I( K
0 p) z3 ^9 S9 X, r //DRDY
) O. {4 z5 q: | GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
- @" b0 K+ E* F! l4 O // CS2,CS3- F" D! L2 C" t9 Q" T6 _
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
: P v, n% s6 Q, f6 c v8 F GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
$ g4 j7 X3 i5 b& }* a: T! J5 ^ //SIMO
% j3 V+ }1 P4 c GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO8 r2 d3 ^5 G2 ~2 d' D
//SOMI+ Q( x8 n1 s- M
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI3 h! e9 ?: X6 H+ M% A; G
//CLK
( c0 e2 @. g5 y1 X* R$ C GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK! G, e+ V0 H3 Q
, a! Z0 E" w3 I' q; s1 e
// LDAC
8 E' v. i( E' I GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK$ Q$ \, `) {0 E: P/ y7 f2 k! J, c
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN/ h2 Q. L j7 k1 C- H
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# ^# L) V9 [0 H1 R1 v7 \ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
5 J# U. }" S( Q* a ~ GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY$ q4 H1 x: n- {! h; o
}
$ q% |4 Q, C- b$ _! {2 ]- F2 |# R% {: J( z5 r
int main(void)& }% ]5 A+ t3 A+ s, y+ j3 ?3 H
{
^/ s0 v, u0 g! H // 外设使能
. x6 _# s: @# Y PSCInit();
" Z W# s- G5 W: o9 \' b+ L# A# r* W2 c' ~4 e4 l5 | b
5 G' p7 i( }: U4 q e // 管脚复用配置
& v6 {' @7 T. H, j9 ~5 W GPIOBankPinMuxSet();! E* ]+ ]( [9 E' W- ~4 F
for(;;)
& k W: b) Y/ Z+ E! V {
: Y& l' Y/ j% T# G: P$ j SET_SCLK();//时钟正常输出
) W) C, o9 G) b GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 l; O+ b b) R9 p" U+ D/ }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
% Z$ y* y5 x, D$ u% r! @% K: t GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN6 C1 L7 {5 M/ ~9 U4 R
( p* D3 A- v9 S7 M/ v1 Z
delay(20);
+ q0 g0 R2 ^4 A) Q$ s1 g CLR_SCLK();% o/ ~; v/ b9 c& R ?6 }1 g
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS31 Q# @/ A& _5 R, w, ~
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- j2 {0 Q" q3 z# P* m& H: [! a GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ Z [& ]0 [. W delay(20);
5 N8 ~- g) y- i2 l4 r% { }
8 t7 f4 f. K _}" o# T V0 s! P8 K+ Q# U9 f# p
|
|