|
|
使用下面的例子代码,不能使SIMO和CS为低电平:( h H% {5 ~ H7 {5 k8 k4 P. A
void PSCInit(void)
8 D1 s4 ^, g6 b) F% t$ b1 k i. Y0 p: v{; c' O$ f1 O" C: q
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);1 A9 D8 B ]% p+ D$ c8 X9 e
}
8 O- e# h0 {" c" Q- [% O3 B* R5 x2 S) ?: C
void GPIOBankPinMuxSet(void)0 T3 S0 P/ T# p; D: ]' V9 ^. v
{8 [" a3 p- H0 i$ w
// DRDY ------------ GPIO6[14] -- 111
4 U7 L* G4 \7 f+ B+ d$ F // SPI1_CLK ------------ GPIO2[13] -- 46& c% L6 J3 Y% y! i0 R
// SPI1_SOMI------------ GPIO2[11] -- 44
- l8 m+ L3 g& @0 c // SPI1_SIMO------------ GPIO2[10] -- 43
. H- Y% p1 \* I" Z+ |0 J# V // SPI1_CS2 ------------ GPIO1[0] -- 172 W w7 p1 k& N8 A" K
// SPI1_CS3 ------------ GPIO1[1] -- 18
: F: i. M0 p: |! k) ~ W e: w; _
5 Y. m- V V7 F* {8 v7 {7 q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
3 d6 ]% O3 ~) H7 c( w HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
# k1 O+ ^$ B- m) m% m' Y2 F" C# ]7 S HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);3 |+ U& n2 R2 I9 i7 B
9 w, K+ @! q3 z( |* Z
//DRDY( e" z& t+ \- b
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
$ X# x: l9 Z; }# f+ \7 D // CS2,CS3
0 A: G- f) E) v; i; U5 G GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2# ~* r- c( ^& O& T; P3 Y" x& l6 Z
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
/ \. ?1 K9 N. D6 c) u. q //SIMO
$ Z" z" z2 @1 o. Z GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
! O/ U3 K; g* D- n- P' H //SOMI" C5 b+ ^, `3 ]& |7 v J
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI; c. h6 E# }" z6 s" E
//CLK
# U6 N' h* g* d% B+ n GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK% W7 m8 t: ~. b. p a! S* \0 B
% W3 J1 A. a% z3 {8 H" j: } // LDAC
4 L1 S2 i" j i! C GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK) G; L7 s/ M6 G% w
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN$ ]/ c3 t3 r% J7 B
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2: l6 G/ V- n: F
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
6 P0 `/ m( E2 b! a- ^: x GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
; |7 ?% L ~$ r/ l: T}
# U4 A- s3 f8 @& v" @. `+ ?/ b' B* _: ~$ r
int main(void)
4 G. R/ P$ X- a* s+ w& Q$ A1 N{* |0 z w6 P% `. U6 Q
// 外设使能
) ]* e5 t k0 F. m PSCInit();
3 |% n% Z: `& e; A$ p) R. [9 w- o5 s- E: q
; z1 B2 a2 G8 B/ W) M$ L
// 管脚复用配置
) A- t# o; x! N" ?5 N GPIOBankPinMuxSet();* |. U2 g' R/ i6 K4 b
for(;;)* T7 K$ y4 c# d& X* D" A/ @2 C: T
{
) t: D/ s8 H" w% a SET_SCLK();//时钟正常输出: h) x! e6 F, A& `
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# T# @( g. J- f- {% {1 V GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
# j- k2 j! W3 {$ @ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
; S' |" T$ M d/ Y' w; F, u# V& @: ^4 V2 t; K/ V
delay(20);. K" M6 J2 @& p+ G( Y9 E+ ^- e
CLR_SCLK();
5 G& x2 J: d6 w+ M( c9 J/ H GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3! a- H" n: j4 f) {0 n* t0 d
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3; x, ^, ~& ?4 [( y# }4 p
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN) {9 u3 D5 C! y+ Z. a4 s5 ~
delay(20);1 r/ P9 \9 J6 I: W: X+ R
}- S' e' t7 }" `6 ?- ?% B4 D
}
- r, y) C8 p' |" S* P |
|