|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
% J9 p2 a1 P% i+ R- Hvoid PSCInit(void)9 u1 Z5 t9 P2 w' H3 X
{0 _, D q/ K) q/ ?( A1 o
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);9 K3 ?/ O7 ^. c. L, S" b+ h! g
}
7 L5 ?) P- k* W$ H# A
y# w2 V& a: a k5 Ivoid GPIOBankPinMuxSet(void)
q& G4 D* h; ]9 b# T m{/ n2 K" q9 Z$ l
// DRDY ------------ GPIO6[14] -- 111
' D% @$ \2 R, N* e' K2 h& g9 ?5 \ // SPI1_CLK ------------ GPIO2[13] -- 46* v$ r4 l6 @9 ~5 c
// SPI1_SOMI------------ GPIO2[11] -- 44
) x& {+ r5 p. v' T# A; [/ T+ ^ // SPI1_SIMO------------ GPIO2[10] -- 43
: A6 j9 M. n$ `0 Q% d u // SPI1_CS2 ------------ GPIO1[0] -- 17
, F( b4 ]2 i+ h+ `3 k, Y // SPI1_CS3 ------------ GPIO1[1] -- 18) L% G6 L' {) [+ m
$ N4 k6 E: u) h
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
- P8 F Z4 Z: [9 n; P: F9 ~ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
0 m: I5 f4 q& S! [1 r HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
9 _1 m' d' j( B
- S# E, R7 h7 m+ { //DRDY( o I t2 N6 C: h# l
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
, d, i4 n( ]4 W7 E7 I7 M% K/ ~ // CS2,CS3# K( O0 R$ N' W# Q, {: I
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS22 z. j& f% }% {0 A% E8 O/ w
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
3 u- y6 [# p/ X& G, j& p //SIMO
* V+ j" |" [/ I GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
8 a9 Y; ^$ X: c3 j5 _ d //SOMI; K W3 N$ y1 M9 U% V9 r0 k
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
1 u" a6 l. [% u% ? //CLK7 B# W. M E7 L H% c; e, t
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK; b! N# O4 Y& D# q7 F8 ~7 Z
* ]- Q2 { J {1 ]4 i' l
// LDAC3 W- M+ l) V% u% N3 g0 B
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
' G& p/ _0 w4 Y1 m# k GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
4 x6 I- S$ i2 @3 A GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ }) a( i6 n2 Y' I5 N$ z
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3' T8 k3 R% U: h# @* H7 J; p
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY9 B# d0 M: }' ]6 W: }! g
}
- g: \( s% i& i$ V" z; W7 L4 G, g0 j1 B% Q) o7 \
int main(void)1 k6 r+ _5 R0 X9 s" L$ B
{) Q2 j+ C! ?1 E3 L% e
// 外设使能
- ?4 l9 q0 L R2 q PSCInit();
+ J9 ?" }+ t( ^+ U( U
, o6 O1 M0 @4 o) v: d, l. P ; k; Z/ I6 Y9 N6 r# v8 I
// 管脚复用配置
3 ^1 g, ^ j. r3 F9 Z2 E. S GPIOBankPinMuxSet();1 O" Y1 M& x0 c* X; Q! v! z) N
for(;;)( Y O0 p- ^$ ?) }% y
{/ N7 Q+ h+ _4 B
SET_SCLK();//时钟正常输出
. y/ \. A% R& b' B) O7 U4 R5 E+ Z( h GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& Z4 R% t0 c3 g* l4 U* B7 a5 r) B GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
5 G: {, u P1 L& |9 ~6 ~ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN$ R% k$ M4 a$ R: |
c% u6 C) j8 r4 g' D( ? delay(20);; O8 n" r7 O* L6 A% {/ t" k( D5 }
CLR_SCLK();& ?- m: i% W* ^4 V, ^: s2 S
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS32 c/ e* R" \& `! p4 }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3, ]( ~) x5 N4 N: w( l, R' y" o
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
- @& d. w( o3 r- L: f delay(20);. N0 O4 k' H+ c) G% K1 x
}- ]7 Z1 _& }: p5 |2 y
}, d5 u& _/ b0 ^. f% {" {1 r/ c, x
|
|