|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
2 f! d/ \) P2 k# e9 svoid PSCInit(void)
g C3 C) I- V* l: D) u6 k{9 Z1 k! v' H8 x' g8 q, D. W& \
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE); E& f/ C' @ g7 h
}
! X( C0 y: j) B9 v* D$ X
2 z" [5 D/ Z. Yvoid GPIOBankPinMuxSet(void)/ j8 q# R0 r* u" u, R& M! I9 h
{
! n% g+ N3 u/ n0 [$ ~( i: l3 B // DRDY ------------ GPIO6[14] -- 111! e* o- _# Z: M0 Q2 m- k# A
// SPI1_CLK ------------ GPIO2[13] -- 46
4 i1 B" c2 f! F; ]5 S2 l% g // SPI1_SOMI------------ GPIO2[11] -- 44
; o3 R0 h6 _7 a // SPI1_SIMO------------ GPIO2[10] -- 43
9 a( W# S* x6 O9 g" U6 p; y // SPI1_CS2 ------------ GPIO1[0] -- 17
9 O6 R0 x0 f' I3 b // SPI1_CS3 ------------ GPIO1[1] -- 18& E5 z7 u3 E( U# B# h: S
c" _4 s2 L U b5 E
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);3 [7 \2 |; |! M$ C0 B3 R( {" M. U
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
0 }" E# b" `6 T3 d) I HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
" ^, @4 h( d9 ^! H J8 M0 K2 z% }( z, _: M3 Y
//DRDY
' a: c3 g9 U' y& X y; V GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
. f3 B- H e) C V // CS2,CS3
9 h5 p% ^: H6 ?* S2 v GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
; e" a: M% J7 O E. H* u% X! N; k GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3( D+ n5 t2 N% P U5 Q% L8 `
//SIMO
' H0 i4 l, p' T2 [ ?7 j: x" T GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
3 f7 Q& u6 B1 `/ `0 Y8 _ //SOMI3 ~3 U& B9 u, U& a
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
8 O4 ]0 A- U1 {" c+ N //CLK0 U3 N5 `6 n2 O4 N
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK8 ]- L% v0 @4 e6 C( n
; e) D( t0 G' R5 j8 ^* m
// LDAC
@1 D0 |; F( Y7 A) g ] GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
# ?* C9 Z$ l) X/ q% L9 v; n. K GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN% c% t) v- |- N' s3 b3 \5 Z, [
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS22 R2 g/ A2 w5 n7 _
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3! w( _- w$ r( g- {1 Y8 N
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY/ u! x9 |4 ~# J8 P1 C. {
}
* N" p" r$ F7 n% x7 L, X( r+ S- c3 O2 W
int main(void)
& b6 |' O. F# }% N$ [0 B1 {{% x8 d. G( N5 P/ i7 z7 d
// 外设使能( a f' S/ P: Q/ `( U
PSCInit();
. ^, |; {. A- a4 }( D
5 c/ o; l/ Y2 j3 W4 N 3 H+ T# H" R, A
// 管脚复用配置0 |+ w& m( }, F8 y' @6 e
GPIOBankPinMuxSet();
, `' ?8 c: S" [: k/ [1 B. Q" e* c' \9 f for(;;)+ q. o8 L9 D$ R$ m/ f1 N
{
$ }' \5 L3 i( F, h { SET_SCLK();//时钟正常输出& a6 z& ^( @- ^% z
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2+ ~! Y E9 {0 g
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3' {: Y( l b. b( m$ k7 f$ [
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN: N; H% t+ ^- \: P9 b8 K) P; W! j
: K5 U1 Z& u: `; U' B* ?& U; D& d0 d delay(20);3 T6 a( x2 {7 n: [1 s* s% B- v4 p
CLR_SCLK();* e6 b H( O5 r
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
1 Y- t9 y% ^* z8 @' [8 a- ]5 R7 o GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
& ^$ ?- j- e, C, O GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN1 L: v5 _/ @9 }6 [' _. r* h, d
delay(20); t3 i; F) c3 x& c- v
}
: C7 x6 {% F a! S: P g# R}
& g+ h5 U, \5 t/ C |
|