|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
# r; r5 _* t, }3 yvoid PSCInit(void)
: n8 P6 V5 s% y& O6 V8 ^; e{6 F( _! v/ p( j$ Q( s& U
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);3 z- [3 O, g0 }% t! J& X
}% V7 Y& i L) c# S1 A
8 \0 l7 |" o4 o3 Q4 W3 t- bvoid GPIOBankPinMuxSet(void)# f+ ]' C+ |- @# H$ P+ K
{; C/ i2 X7 _: w |& \) l9 F
// DRDY ------------ GPIO6[14] -- 111
' [( e+ I& U" _# m) L // SPI1_CLK ------------ GPIO2[13] -- 46+ k4 n/ `' L" i, |
// SPI1_SOMI------------ GPIO2[11] -- 44- H0 q$ H2 u. G/ u$ e. d/ T
// SPI1_SIMO------------ GPIO2[10] -- 43. K# V) j0 X' F
// SPI1_CS2 ------------ GPIO1[0] -- 17
+ Q* k- @; a$ {: I // SPI1_CS3 ------------ GPIO1[1] -- 183 Q4 d8 z. I# q7 `% B
8 Z& e+ l: l B3 I. |6 R HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
6 Q' E! j! _5 t7 a& Y HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
* F4 B. ]' K9 Q HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);7 S8 r# `# f; l* V) ^
) f) C- `0 B. R: c; |* ` //DRDY
8 j" D+ T2 Z" ^% g; ]5 M" v GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY! }6 f" H5 D1 P
// CS2,CS30 R! Y4 {* e( I0 h
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
) l3 {0 q* N& n( S/ o GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3( G; H9 C) e/ @: x- o
//SIMO
: L: N- b6 Z; I GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
% Z* x( `8 c6 y! S3 a5 t$ l //SOMI% \7 ~) q# f" c1 K
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
" [" R0 t6 a3 O+ ?! X9 Z //CLK
; I1 D3 q0 b; ]) G, s- a: N, d# Z GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK% K2 _7 d- m) _
6 i" |9 I k( @( x1 v // LDAC" y, U6 D6 X6 s; B- w- K0 c
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
. |# m5 @% F9 g: d& K2 M: P. w GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN, ~0 h, h7 x; \/ h2 K
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
7 @9 S3 R* T) ]; ~% b( M ^1 l GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3) `5 V" H- w) {
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY% C. a5 r4 ^ f: b( [
}
/ r+ `0 P+ L& e6 Z) [. N `, j, X6 ^8 Z9 a4 B
int main(void)
$ Q. L! I( N+ e/ {) r& j{& C/ K2 H$ u& Q- e6 b) |& S
// 外设使能
% y6 `' o- N& \7 j+ c7 G% A! ]5 _. c PSCInit();( ] d" y/ k0 ~5 \# d& @
4 D+ _' ~' g) W5 z
' S; ]( o! N& h. x3 Z! o // 管脚复用配置' x+ j0 `6 t- d* W
GPIOBankPinMuxSet();. c9 ]! u6 y$ h: f. z- s
for(;;), R- S* l# i6 B# C
{
+ q3 ~9 _ G; ?4 [6 X2 | SET_SCLK();//时钟正常输出
. e3 E( c0 Y% O9 Y) q GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2' j9 w5 ?3 X# C: [
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
1 e/ k8 \7 c% M! F; N, R0 M3 H GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN5 f8 B5 f! S. [
- X a2 F! ?/ {- @3 s9 K5 Q( L. H delay(20);
8 C& d6 [( @4 S! k& j/ \ CLR_SCLK();0 m' i9 a( X1 U' a
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
c/ G4 \) @& {+ b3 K GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
- C' |9 R: J+ i$ z$ b; U" H GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
6 h2 u1 v2 K- m" j, A delay(20);
" c# Z; N. l, {& V }
4 o$ D( {+ h. O6 L, N}
6 q5 |) I7 c0 b9 d0 l, t! J |
|