|
|
使用下面的例子代码,不能使SIMO和CS为低电平:* B* B8 }6 r3 O8 r N# q F
void PSCInit(void)
+ m& A$ p: c: d; A{- V! w& j# N/ K1 r
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
- c5 G3 ^* B! t, D3 H4 g}
p, S9 }; h" _& x% l7 u9 X0 c
, m0 E! d$ p, rvoid GPIOBankPinMuxSet(void)
3 R( ^; D& b4 a; }{
+ u- u3 d6 }8 S4 z3 h // DRDY ------------ GPIO6[14] -- 1115 f0 [) _. ]- ]3 H, _( v. P
// SPI1_CLK ------------ GPIO2[13] -- 462 ~1 `- E- Q0 E# R8 g, K
// SPI1_SOMI------------ GPIO2[11] -- 44
; x8 |' _* C1 f4 |+ a // SPI1_SIMO------------ GPIO2[10] -- 43
, k3 F5 Z/ M" f // SPI1_CS2 ------------ GPIO1[0] -- 17
9 q- F$ @; `3 X) i7 S% U% ~( ^ // SPI1_CS3 ------------ GPIO1[1] -- 184 p8 A$ S$ ?) z- v4 ?
+ @% s4 P4 \9 @( f& q: V6 I' O$ z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000); m c6 {) A' t
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
- F" p C" l) n; Q. p3 O HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
4 o9 ]- h- u8 j8 Y H7 w5 K* p6 k+ b5 F( k% E8 D8 k3 P
//DRDY
, _* c3 c( E# E GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
/ u- ^- _) D/ O. O // CS2,CS3
0 e8 a" U g, A! l$ D4 P GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS20 ]5 t" U7 C+ s$ x
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3$ v3 j" w+ `+ `* o2 V9 o+ d; D# @: m* H
//SIMO
& C# ~0 f, U9 N* T GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO3 g! i+ ?9 Q6 s& Y2 K0 ` w6 q5 b8 K- H
//SOMI
& K" }6 E: f2 K5 O* |8 o8 u GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
3 z. i/ a' n# @9 u& u //CLK
7 ]" K* j, g2 l/ ? GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
- q! ~0 N, o6 \3 d- \3 C
8 Q, F$ @/ k4 [5 T* l# V // LDAC6 X2 b3 e0 L( O3 s; m2 S/ N% e1 S% o
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
* N: i2 S3 W& \9 p GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
$ ?: j! C- e3 m" q0 N GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
/ |% R/ b [9 i. C- C! E, P GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
5 y1 n/ l- y9 l% L* U: G GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY
, e/ x2 M( {5 \. O}
7 P. a: _# L7 R! K7 V+ m
2 i( p* E. F Q- Vint main(void)
2 O& m V; J# ^) u7 v{
; T3 e$ \8 j3 n' ] // 外设使能
3 x, ]0 w) y+ A; j* ], H' ^ PSCInit();1 Z9 G5 j, y. z2 Q. V
+ `6 C+ {# T; y8 v : {6 q; v3 G8 _
// 管脚复用配置- \7 t7 L6 N6 L. g1 o; G! j7 u6 O
GPIOBankPinMuxSet();
9 k+ D3 R; q; M E for(;;)
9 ~% ^4 d) t2 F7 n6 F: z1 j {
* Z7 C8 O D- k; \ i/ M SET_SCLK();//时钟正常输出% u* l# p5 l) R! X
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! k6 _% q! Q3 q2 V% E! Q# m, d* R( {% w
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
) k* ~/ f0 k7 y* I; `' b/ v* f GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN/ V( X5 M6 ?( l* b5 Z9 V& }, q9 x
: h- u& n' Y5 V1 E1 r4 E: S
delay(20);8 Z! D. [# S2 |7 M$ h1 n0 J; H5 R
CLR_SCLK();
* F2 Y( l0 U: k4 A$ T+ \, ~7 f6 a GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3 ?1 _$ \+ T, p1 N# A
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS36 Y, E7 c a5 y) N
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
% h M( w+ a, Y1 S delay(20);) j) h4 \7 _) Q U! n
}$ v+ M4 R& y7 R P; j9 L
}2 Y! ^& G9 f1 s) b
|
|