|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
' x" T4 j9 X( Dvoid PSCInit(void)4 i7 K, g* ~. y4 w% J* f2 i
{0 D: N$ v7 ?4 K9 F& i
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
/ `( b3 q8 D( D& U* m# K}( r0 a* q2 ~8 e
+ `' u: e7 ]- L( ~void GPIOBankPinMuxSet(void)
4 s0 F# |1 k" `{- n$ M. }/ I" O+ a1 g8 c: W
// DRDY ------------ GPIO6[14] -- 111
' s" n5 y& \/ T- l- G- @ // SPI1_CLK ------------ GPIO2[13] -- 46- S) g* X3 g( Z% [
// SPI1_SOMI------------ GPIO2[11] -- 44
# W: e4 W! q9 T5 G a/ D // SPI1_SIMO------------ GPIO2[10] -- 43* j0 q3 O V M) i( f7 m2 f( M
// SPI1_CS2 ------------ GPIO1[0] -- 178 \8 U6 a# O, Y. F# Z
// SPI1_CS3 ------------ GPIO1[1] -- 18& ^0 f6 c- U- _! m
# M" A O/ \1 @+ R
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);% l9 H5 _8 I& [8 i
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
* [1 Q8 v$ Q. G9 t6 y7 X" ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
8 f- [ P/ M& y- M
! ]3 Z# y5 L0 F //DRDY
0 ^% g% g B; B! f; ? GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY1 o9 O8 ~3 d o( R. D
// CS2,CS3# c# Y8 ^$ i- q. v
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
- o3 u0 z2 D; O/ e* l! F1 G: c2 o GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
8 J) X7 W" k& j1 i1 i //SIMO
5 i% }% E/ x8 }% P GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO8 k1 ]7 p( T7 v& S' m
//SOMI
1 V2 h2 w5 ^, g+ {6 N GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI9 B. E, d; ?% b( A, l
//CLK
; V3 m; O6 }& M9 u6 H GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK; L6 @ P4 @4 \# R/ P3 n9 Q1 P" h3 H8 l
1 r! B$ Q. E7 U* w; v // LDAC1 | N4 M- y2 p! R$ ~$ v$ [9 ~
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK3 L9 F) Z& X0 J1 a e' C$ ~% y2 G
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
H4 B" L5 {! { GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
- \% l8 w) c' U6 u) f k$ a" ` GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
; }2 C0 `* ?: d3 @2 s GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY: p' G8 v3 g5 ^( \/ u s
}
O! D5 i1 p. i
/ J0 a9 n; W+ p+ s$ Mint main(void)& p W. d6 l7 s
{
+ [6 B0 C/ V: k, r // 外设使能! X" y7 Z! ~; W8 W% M' k
PSCInit();4 J- X' W2 G8 O" u: b5 F
- _3 N" F( W3 e/ L3 {7 w# K
: R3 v% F7 {4 a. S" t // 管脚复用配置1 N/ C* t+ \4 s N( F! e. x1 S* B: |
GPIOBankPinMuxSet();5 @5 v0 k- {) q' U- J; D
for(;;)
% F# B0 g3 w( E4 }9 q$ S+ A {
& u0 n( f5 o/ P& E! k5 B SET_SCLK();//时钟正常输出
4 l+ L$ S F. t: w: k4 a GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
3 U3 A+ d( y* \7 k/ [ GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
2 O! k# g7 s: H6 T! J0 I GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN' G: r4 _3 i/ P8 \
2 `. y6 Q. y1 \3 N! P delay(20);
& o0 Z2 M% i3 D CLR_SCLK();" u% |3 V0 C! o4 ^
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS37 {* f1 _6 t& x) K+ c& S d5 T
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS35 z1 {% M" o0 D" _3 j9 Y4 I2 R
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ P6 Z9 B8 p, ^6 [9 p# \5 p0 K3 ^ delay(20);
* `! D" a h" u3 D' y$ ~/ n } j# V& r+ K& I( I; Y# r
}% j; m) [) E: U3 z' g! y0 E
|
|