|
|
使用下面的例子代码,不能使SIMO和CS为低电平:# s" c U3 q2 C$ i) o
void PSCInit(void)
0 _0 ?/ L- z! `{. v- X: w# M- P: N, [
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);. ` U+ d8 Z2 {1 c! W
}; l( _+ ~7 E' f( [! {; @
( N- H( \% V- @0 H' z6 k, xvoid GPIOBankPinMuxSet(void): n# Z5 L9 B! H5 O- `' d/ E
{& a( k: Y( V$ I; ]( ^2 C
// DRDY ------------ GPIO6[14] -- 1114 d; O, i/ e( q
// SPI1_CLK ------------ GPIO2[13] -- 46
) O" _1 @1 s. e2 } // SPI1_SOMI------------ GPIO2[11] -- 44
) Q: O1 ?9 \: K# ?; U! [ // SPI1_SIMO------------ GPIO2[10] -- 43
+ x' x/ u \& \; `5 a // SPI1_CS2 ------------ GPIO1[0] -- 17
% c0 H9 v2 R! J I // SPI1_CS3 ------------ GPIO1[1] -- 18
& R' i$ d. m6 d8 L0 d, s% b6 Z
" r& [9 K9 d3 O" q# |1 _' k HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);7 Z$ c, A- {3 G
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);1 i5 \) E& E1 S7 t
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
, [+ m6 }7 P. s" \9 C6 d6 w. e6 ~! F4 @
//DRDY* \" [3 D5 ~, d+ X% {$ U1 R
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
( u( a" ~. k! ]' y' x$ ?- P // CS2,CS3
! }. |- h/ p W; } GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
& j1 Y6 o! _. ]% L GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
# ~ ?6 s, n- ?! b //SIMO, N6 `: a& d# |
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO7 p8 Q2 @/ B8 D5 R5 I
//SOMI2 t& I& G3 h' E6 y( j1 F
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI5 J) u5 O7 b( v; K/ D N
//CLK
4 |! m/ n& g2 L/ D" B! {) T GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
+ h& ]6 P- e$ h- ]$ r- k, g$ M5 S( I
// LDAC
0 k5 l% x5 F6 A* M: ^5 @4 }8 D GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
4 W0 {! M; E2 Z; p- C$ w/ U9 V GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN' I/ F7 A y# M! R
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
' ^* u3 y: r2 K1 a" P/ G9 l9 z GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3+ p" w5 M+ p, C% T$ p: j
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY! S* n" d! j( s
}
8 q/ a9 O5 B" W4 H2 W/ V" f3 ~* E$ ^: K& }+ `- I3 w
int main(void); k$ t7 F6 Y5 ]) ?
{
9 c- {+ L' ^$ N8 t4 d // 外设使能
" O2 ]! U3 i( N8 L0 M PSCInit();! c# u: H0 O- \! D7 B6 ]# o" s, ^
! S% Y3 Q/ W) c r; C
* _& b1 v- [/ s, ^4 p
// 管脚复用配置. e3 @& X+ R3 Q2 B: I$ B% o- M# s! p# H
GPIOBankPinMuxSet();
' }7 U [# s+ i! Y- c for(;;)- D0 E) D# d/ K; q
{
# B0 J- t1 C1 F" V SET_SCLK();//时钟正常输出+ M) ]. ~1 [, A4 j# x- l# E2 ^4 H1 h3 O
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
& N' z4 t6 {9 V1 W% w9 a GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
9 F4 o% c2 z$ Z8 \6 f: a$ U GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN# _* u S7 z+ Q; c6 o3 @8 B% v
( ]( _8 x( P) A% N& j6 x9 n delay(20);
% k. e) l- B4 @- b0 V CLR_SCLK();
, Y: J% c5 }6 X4 ~! X GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
8 l0 f1 z) y8 |# z3 D- Y3 a( ` GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS34 @) ]/ i4 i! h
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
& j% a) a9 {0 u# L( g7 T delay(20);
* |# c- P0 z$ E3 F2 l# Y; ? }
8 ~% [6 K5 R) m+ ~2 u$ X6 B% {4 B}
. F/ x7 ~" w" U' q- n4 { |
|