|
|
使用下面的例子代码,不能使SIMO和CS为低电平:% w3 r8 ^- x! p
void PSCInit(void) B+ W# K- j0 H0 t
{
; T g8 ^" W2 E+ l, r PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);, q/ C: s# D; K! m/ m
}5 r; z. |* ^% a9 Z" y
& m5 T( I- D Hvoid GPIOBankPinMuxSet(void)1 J1 j: T# V1 E( r/ A5 C
{
6 A; D% b5 p; J. G // DRDY ------------ GPIO6[14] -- 111
. z) ?$ o& Y3 L) d) k // SPI1_CLK ------------ GPIO2[13] -- 46* Z4 \/ }" Y+ W, x
// SPI1_SOMI------------ GPIO2[11] -- 44
( I' ^( g# \) q# O6 Q // SPI1_SIMO------------ GPIO2[10] -- 434 ~! w) a# x' | I0 ~5 m q
// SPI1_CS2 ------------ GPIO1[0] -- 178 ]7 B) o- U% Q H: G( y. i. t4 _) A
// SPI1_CS3 ------------ GPIO1[1] -- 18
. U8 q, Q, S, Z( p; F. p: Z% T8 N7 |
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);( ~% J7 W# r! X8 A8 }! u
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);. x$ ?( {* }% W: N. o+ k) ~2 m, t
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
, J( b. y2 t; M- u. Y Z1 W- I+ ^: l. N3 o$ m$ ]; B
//DRDY$ g$ H6 \& H3 n) I1 Z
GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
4 U+ W( v* ^+ ~) F4 Y // CS2,CS3
! d/ e4 N) ^% r: _+ d. Q$ R! V GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2# W" Y2 a" L/ p$ D5 w/ |% x- R
GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3% X9 V) h& f3 M* }$ U( V. m3 T
//SIMO- F* k# m7 g" w# A: H
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO. y0 J! _3 C5 P# {/ g# T1 q
//SOMI
3 {0 P) [' R& M" I GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI. L/ n& N" e) Q/ r% h
//CLK
7 \% c. y; ^+ a GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK
2 C) ?. J3 K3 x0 N$ n! x" @; s8 h
3 f6 J5 ?6 J+ ?6 d" z6 {$ Z1 s // LDAC2 v2 }4 x; X/ V0 U
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK" ]$ p: d* M0 W$ t3 R$ U. A
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN/ t6 y* O0 h- a: s2 w
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS27 A# [/ y4 u& Y' p) ?2 |" m7 Y
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS32 q0 I$ \% N0 M
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY( E- k* V- e3 O. i' b
}) {! j1 l, F6 H, c& D+ m
6 t; z( j2 a7 T& V# _& W- Xint main(void)3 H. O, q* a% |+ u, s0 p( c$ g! j
{
4 `. T0 t1 ~$ z // 外设使能; ], L- e& x9 V7 e
PSCInit();5 n2 X9 r o" K e g& d+ J
7 Z3 D: q3 V; i. ?. R . r1 c) j, I- C9 U' f2 L
// 管脚复用配置3 `, K( S& ^$ t
GPIOBankPinMuxSet();, J& L! f) n6 L/ q4 ?) y2 a: z: o1 D
for(;;)1 i8 y) J0 {1 e- `7 d: ?
{
, F. r; \4 ^1 g; I6 z, z) b SET_SCLK();//时钟正常输出. x' M# v$ d" w; ?
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS26 o; b- F3 o$ w( E/ B3 X
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3
8 w0 Q7 j! l, N+ p6 _ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN% [1 F0 @- Q$ c% \- A
: ` D, g. p2 c: j+ P
delay(20);
) x/ H& Y+ H0 x8 x8 z# c CLR_SCLK();% M: {& A5 |& I5 j7 a" r/ w N" H$ G
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3
4 T9 A7 l1 L' H/ B7 `! ?$ e: r GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3! z. h, u( ? O. F; u$ u z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
2 g" h2 j3 I3 r. p. t delay(20);
% S( |' n2 x1 v5 J7 n }4 k/ I1 q! ], n# x. j3 p! m
}9 t& a& E; h, M
|
|