|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
! k4 q% K, \5 ?! H$ w+ ?( Gvoid PSCInit(void)8 t7 ]% j% `& q4 j* c3 }, }3 B
{
; |* {: ?7 h) I* V$ t. H* _/ u PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
4 S+ f: L, j$ h6 s}$ N9 T r" s$ } L& s
( e. E% {' u- R4 h
void GPIOBankPinMuxSet(void)
4 A! P& G2 a/ j B+ a, l1 C{( J8 ?, o, U) M) j4 H
// DRDY ------------ GPIO6[14] -- 111
+ t8 U; U% J2 g( _8 k: s3 v- x: ^ // SPI1_CLK ------------ GPIO2[13] -- 46+ I7 G% ]6 @# E" |: s
// SPI1_SOMI------------ GPIO2[11] -- 44 K$ r A! T1 s, l
// SPI1_SIMO------------ GPIO2[10] -- 43- u! ^6 k3 y. c0 ~
// SPI1_CS2 ------------ GPIO1[0] -- 17
! @, T0 J2 m; i# Q2 \ D9 u7 C // SPI1_CS3 ------------ GPIO1[1] -- 18( C8 ~2 U0 Y/ B ?1 F
* V& `: M; x9 ^3 @ HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);8 { V6 n+ _+ w
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);1 E+ _9 S6 s6 I# f
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);; }- N) s$ H' k( o0 I( j S* i1 ^( D M
# O0 Y4 e# Z% U6 V: O) ]6 y //DRDY8 b. c( K O+ s% `
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
, }/ E% N0 \9 `5 o, F // CS2,CS3
0 }. Q4 o5 L% R6 F% |( T GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
. P( U) P' f: | GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
R f% [4 r, o, x- Z //SIMO% a; g8 M3 p( c" A& ~
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
: u; o. T9 ?- W: V& D2 O //SOMI
3 P* m9 k- p$ ]6 Z3 w, y0 p5 D GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI8 ]! v3 Z$ { E% r3 g; s* t5 m
//CLK& m# t5 k1 X; E' i3 ?9 u: s7 y& y
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
* m6 v0 a# D* }$ D. X3 [
: S$ a$ `! W' T' q- X // LDAC- C4 N6 K4 F( r N, \
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK! S6 }% m! ~5 `- M
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, K( Y1 {3 [2 B$ x+ J0 r
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
; J z, P- i. {! G2 p! A GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS34 l. V1 n2 B( \
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY( V* ~7 B' G! O- \( g6 u
}; l; u& L% X4 p# X: |2 j5 C
4 i; y" D* S# ~2 O' F
int main(void)( t8 Y, g+ K# U' E& t! Y2 w1 O
{ l' v) C9 b! z
// 外设使能- A" B2 [ p, _: O+ y! q
PSCInit();
/ d' |: i5 z) L6 B0 ~* s. j/ R! _/ J) \# k, z8 d* Y
; n7 ^/ |; _+ n& C( j // 管脚复用配置
q2 M- z$ v) m/ Q4 L GPIOBankPinMuxSet();& r E9 z' {" x5 m4 T: {
for(;;)
+ u7 O5 Q/ c6 N0 U& [ {5 I+ [. v" K. S( k, S
SET_SCLK();//时钟正常输出 O9 K: J9 H- t" x
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
! i- J+ j8 U V GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS30 c) }7 u/ X9 N. d0 w8 O
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN" ?( y3 U V4 Q0 t4 f; N" b; e
5 B2 _: u y1 }% m+ v
delay(20);' M1 {$ L( L+ i
CLR_SCLK();
0 |* A6 O* M7 J2 b: x: ^- U1 r2 b. g6 V GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3' ~4 v: \3 r$ j& `
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3" T- c5 `' }& [: h+ M) G- p
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN2 N7 @; g5 u+ S' {2 U
delay(20);
) U8 B4 h& l. g& u( q, d) ^ }( r/ P9 o: J# ^; e& b/ ~ O
}
5 L* b- I' u( b2 m$ S |
|