|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
( ]4 S4 _6 E7 |2 p- G9 p+ Bvoid PSCInit(void)1 Z% Y2 P+ I( D* D8 r ~9 }
{
* I( j, z/ O3 ]( P% I PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);5 @, `' q' g$ a3 m- k" o- |) q" Y
}
) H t0 H( l& ~! Y. f
+ b+ q4 s) F6 c& ]. `0 I* {- |void GPIOBankPinMuxSet(void)
- I' ^ k6 G. g' V3 d{
: o9 F. `' w: _* K // DRDY ------------ GPIO6[14] -- 111
4 `; X) C* }" U! ^' j5 T1 M: x // SPI1_CLK ------------ GPIO2[13] -- 46
1 [ p0 y9 U+ Y3 ] // SPI1_SOMI------------ GPIO2[11] -- 44
7 C" {4 A, x0 K$ `0 { // SPI1_SIMO------------ GPIO2[10] -- 43
# d0 [7 ~( Y5 K4 }$ B% F // SPI1_CS2 ------------ GPIO1[0] -- 17- L- e! R4 ?: L1 E3 z2 J
// SPI1_CS3 ------------ GPIO1[1] -- 18
, A2 {4 q6 }% r( F* V2 w1 x* Q3 F+ V% V9 _* }3 |8 }4 Z
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);" \0 P' Z7 s8 X3 D/ w! t8 @" P
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);/ x$ G* Y0 C, h/ U' O9 M9 m( r
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);6 i3 R$ ~/ `( c) j
( V# ~2 z$ ~8 O2 m& j
//DRDY
, E3 C+ v c, e; P GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY z( q' G0 m/ ^5 D
// CS2,CS3
4 n6 F* [& l# r7 l% U) L GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
/ [6 ]! h- L5 \9 N" C GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3; ^ v8 i! r) ]: ~- N
//SIMO! }% a$ s+ n- R4 S. ^ l/ k
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO, i6 J+ D; F! J; a7 e+ ~, c# Z
//SOMI- Y0 E- r" z8 }) j
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI$ z: k8 F# h# ?: D" t
//CLK
7 h6 K6 D" H) h GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK' i! p M# c% i3 l. ~6 n4 a* `
8 b2 i8 n+ [0 M; T# E // LDAC$ `/ k8 k# K# h" T5 o! @
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK+ i* z3 C+ ^- W
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 |9 Y- M7 l" c( X$ l GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 L" ?' q# O8 B' g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS37 L6 |, s5 g& [! i) V
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY2 S1 F8 \" L$ j' l! h/ f4 W* ?
}
9 D# T8 P9 H' Z6 b
5 N8 M6 p( s$ ^$ K$ J5 Rint main(void)# I+ A9 p1 f- i% g+ @
{( F! i/ k9 u" l5 {0 D$ r4 N
// 外设使能+ e" A7 R0 z* `& r* `
PSCInit();, T: p% U8 {* x( e
% I& g! r2 u2 g% }! x+ |) s7 z
4 q3 ~3 {1 A6 e1 y4 ~- j% o // 管脚复用配置8 J7 D, h1 d- g1 I
GPIOBankPinMuxSet();. o2 v' `9 `2 v, P5 o
for(;;)
) w; ? N+ i! Z% \ {
) u; h1 Y6 p" ]+ j/ N1 r SET_SCLK();//时钟正常输出
( q5 V% L# o2 a) P! l GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS21 {2 j5 o9 ^$ I- ~% @% y! d; F b0 c
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3+ u c# O. M( m1 O( e
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
2 K* _8 O) w7 K$ v
/ A& l+ ?: M! c4 i" h8 l& d delay(20);
7 i' Y0 |6 }8 ?5 O* ~) ? CLR_SCLK();
( x8 Z6 Y* a! F# K GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
5 }/ ?! Z. l8 @ y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
4 P4 B' U- `, I% g5 M9 w' \+ Y, I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
* h" D' n; x( ]! o delay(20);) K) W4 D' ?3 u( I7 K8 \0 U6 U% N
}' p! M; Q6 F$ W0 }! i1 v# R# {
}
- A: }3 W- M0 |; p/ o, e |
|