|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
' c0 V6 V d6 i( ~void PSCInit(void)
, r+ ^& f* A! g1 K* u% s- ]: R{* u2 g2 }9 L# @: T9 h
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
0 M' A* y, @+ }, I( L}
3 V- p( l- U' b3 ]+ [4 z7 I# u( }8 s! B2 Q
void GPIOBankPinMuxSet(void)
' U) i) y( M j5 @2 j{
; ~5 {; J2 N" G" l // DRDY ------------ GPIO6[14] -- 1118 E% K- I2 ]) E4 `( u& \) i
// SPI1_CLK ------------ GPIO2[13] -- 46
- ]. ~! Y% E" C // SPI1_SOMI------------ GPIO2[11] -- 44
0 T" H' L- |4 [$ f! o. C' Q // SPI1_SIMO------------ GPIO2[10] -- 433 N4 i/ Z, v' U9 u# p4 n3 H
// SPI1_CS2 ------------ GPIO1[0] -- 174 o) h* ]7 K4 m1 D1 B
// SPI1_CS3 ------------ GPIO1[1] -- 18
$ \" d: B0 K; i- R/ ]' s0 D2 f0 @- J. H9 Y$ T1 a6 G
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
$ s% ?% t4 P }* a HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
" D0 e1 j3 |1 x0 e. O+ Y9 C) K HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
1 {5 g3 R2 B# {. v% B
) J, K" }8 t( m) ]8 D //DRDY
s& m1 s$ [- l+ F+ _6 }8 V2 F GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY- E$ S2 ]. N' e% C0 Y" f4 b
// CS2,CS3- H9 o( P& O [: a
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
, L% Q9 S9 {9 |' q G8 [ w GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
; | Y( M6 r0 m' v( ~$ t. k //SIMO
* W! ]9 G: T- l1 g. l GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO8 y( `$ O4 `* u! B1 X! Q) a; x2 x
//SOMI
1 V1 i$ V8 Z, P7 Y( x% S( R# C. A GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
+ f2 G2 D% P( \( D //CLK
0 o# q3 V7 r8 x" U/ y2 {* U9 O) Z GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
' f* i9 A: z; j2 x4 z" J. [5 c
5 j( `* R& ?! m // LDAC. e- i, {. Y5 k; m& H
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
' {! s9 s! r1 v8 y GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! e3 o( W6 m) }0 t
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2& q8 O7 t% T# E" G3 ~0 Q- ?
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS37 D3 w# j3 {3 t# }
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
1 k) V8 O2 @2 a M, F}$ u- M$ w9 x# O3 @
/ |$ x) B8 O0 G8 t/ fint main(void)
4 C3 ], W2 R/ n9 u' J) a1 N) A{
) h- ^$ C8 Q; K4 K5 L6 _ // 外设使能3 z2 Q0 L2 N2 c) t4 \
PSCInit();
, Q( P! n- x3 Y
; Z* i6 h/ f2 Q4 F: J! S6 ^+ b- y
: k5 c: w a, l, j/ A- Z // 管脚复用配置, F, E) h; x" X+ K. \4 h) b0 }
GPIOBankPinMuxSet();
; L9 {6 K+ m5 n" C for(;;)3 o4 D1 g. S& @( x# E8 ~
{
! s& w4 C! e# y2 q- {( S. Q1 { SET_SCLK();//时钟正常输出. k, n5 K O. P: {
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
, W- T4 }) u& u7 e1 t- G$ m GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
3 ^3 a; }" t, p$ z | GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN( ^. {/ g* {. f6 n; X$ c7 K
, U, l8 t# } ~8 G delay(20);/ {# a7 Z' `# |& o3 G: T
CLR_SCLK();
+ J' v+ k3 ?1 X; R9 n GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
1 a+ A& w% M! l) p5 _ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS39 R2 Y' N8 R. ?& f2 {; ?$ f
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
, v6 H+ @% X# R delay(20);
2 j Z" r2 \8 F u }1 L/ T, U5 q5 I7 R) }( Z
}
0 \1 z, G. b/ T8 S m8 X |
|