|
|
使用下面的例子代码,不能使SIMO和CS为低电平:4 J9 k3 o; K1 y
void PSCInit(void)
) |% g1 y. {# G2 f. ^& _{
# j4 W) q* \8 t7 e: Y' c# |! } PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);5 Y" |' }, U$ I' j
}
: p/ n! K" Y9 e1 [: r1 g+ W: V, @8 T6 u/ n6 Z9 @7 a, C
void GPIOBankPinMuxSet(void)
8 c) i# G# o" |7 B3 S% B$ V* g{0 p) B3 U0 m0 ^1 }/ N
// DRDY ------------ GPIO6[14] -- 111& k2 S! _5 U% z5 y+ ^* M
// SPI1_CLK ------------ GPIO2[13] -- 46( b5 ]8 x" |6 {6 ?
// SPI1_SOMI------------ GPIO2[11] -- 44
/ l# J5 {' r7 f: _" O // SPI1_SIMO------------ GPIO2[10] -- 432 U7 v) ?% M3 Z
// SPI1_CS2 ------------ GPIO1[0] -- 17. z6 Z1 O8 {1 T+ o; x" g3 ~' ^' Z
// SPI1_CS3 ------------ GPIO1[1] -- 18
( U3 z. B, O4 b; c& E; c& G
6 E. _( p- K& n# W+ d- k HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
# s/ }* c* Z. N+ o4 A HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);5 m, U' H8 T6 p% L7 y
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);7 q `1 a1 A; ?' X' j) i5 r
9 @7 |8 w& S! P; h# b+ y' g //DRDY
6 B$ J3 K k* d GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY) f' O: F$ ^0 c/ E+ b
// CS2,CS34 v$ t' G7 P& Z3 h
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
1 p- V8 ]8 y: h8 S! T GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS30 m/ [! l1 C% k" X
//SIMO
1 I( F, v0 d/ R9 S% b GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO- b+ r) v! C- ]3 ~2 x! J( v
//SOMI
( h L+ p ~; z" N: _4 r* g4 h# R GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI. f$ e7 Q" Z+ @( B* B! W, k1 j
//CLK
+ e/ r/ a3 e8 }+ E* P9 k5 h GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK6 H1 G1 y. u" ~9 `
$ X$ f4 s! ~! }) P& G9 V2 _ // LDAC, h, d% H I: H7 i& p; g
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
2 r* F' ]1 @, t8 A8 g$ @, W1 s GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
' Z* h6 n8 |' \ GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS25 ~' k" G3 X* _; |% N
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
" C7 U8 n3 W; d* T GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY4 g ?) T0 x; Q: ]
}
: k! P- E; i1 S" B5 U# ^ r5 w2 v1 B* w; k
int main(void)
5 Y4 z r y" h+ `0 t1 S{
+ x W# V6 ~% B4 C& P // 外设使能
0 k) d/ J( E, [* _% J0 z0 t PSCInit();
2 q: R. |7 _* U- @7 P
8 N3 `- Q/ M- C ) n/ E& q9 x0 j6 C
// 管脚复用配置/ R) |" s8 h% W4 z
GPIOBankPinMuxSet();7 o9 P: ]2 L# d2 F1 J" v
for(;;)
9 f# p: B3 _ m4 ~2 M9 j {
/ l& G$ {- r" X* s SET_SCLK();//时钟正常输出/ B6 U0 @/ u/ Y( z8 ?2 M
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
4 R$ V+ j5 Q; { g n# _7 Y GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
0 U5 K5 g2 R% d- ~/ D GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN5 s0 r: \; E8 ^. m+ k
: U) D. ^# ~; z# |6 ^, F
delay(20);
# ?* y: z+ T5 q# t/ l8 v/ |9 { CLR_SCLK();) R! I( U! N8 `; g' `1 x/ o8 {
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
9 j& F' a7 H6 _* x* ~5 G GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
5 F' y* x' q% @# _: _ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN! E7 d7 _9 s# H& c8 K. U
delay(20);
, d. `9 D3 c+ P! ~, U: [- V4 L* u/ H, ~ }( h4 u4 |6 J' r7 D" W2 t3 \! Z8 F5 {1 o
}. T0 u0 Y2 b/ J( p3 I8 K$ [
|
|