|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
& L5 h& x" P# p4 a4 qvoid PSCInit(void)
( M5 y+ m$ U6 k$ q4 G# M{
" ^) [2 L4 E( I* N5 k) }; [% W- B PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);. q6 t+ S% a, s! Y
}& S( P9 g/ ~/ m+ K
2 \) l; Z$ u M7 Q
void GPIOBankPinMuxSet(void) D3 A& J1 a5 r) q, j* \8 t2 T
{# i! V- w$ j; _: {7 W7 @+ U
// DRDY ------------ GPIO6[14] -- 111
0 C' E7 ]! @$ K( \) s) m // SPI1_CLK ------------ GPIO2[13] -- 46
0 t: P0 K }1 W1 [2 G, i // SPI1_SOMI------------ GPIO2[11] -- 44
& L e7 j& V B! L& l // SPI1_SIMO------------ GPIO2[10] -- 43* a V% a4 N! h9 v6 r
// SPI1_CS2 ------------ GPIO1[0] -- 17
! T* Z7 R& X \ // SPI1_CS3 ------------ GPIO1[1] -- 18$ g2 ]! @1 X0 n
# |( m- ~7 b5 ]
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);
8 U% o9 b, x+ p+ k3 T HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
5 s* N' q J% A+ e, ] HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);7 Y# \8 q3 \- p( W8 ]0 e b
) y O6 U, r. e1 T+ b# A' K
//DRDY
7 \' n9 V. S" ~" d% i5 Q9 h GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
- \- h1 o% ~* U' H9 W: _! @ // CS2,CS3
" z. n/ @/ k$ j! y m$ u GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
: w+ D$ [9 Q* q5 A' p1 |9 g/ N$ r% j GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
) Y8 Z' F- V( J- J2 b i //SIMO
7 j2 y3 S- p S$ M GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO! {6 h/ p4 J; @3 {" D: B
//SOMI
7 t7 p* J0 ?; ~8 r' \; \ GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI* r9 H' x+ I* b
//CLK4 U; R' b n! z S5 i
GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK3 X; B( ~* e3 P; V8 P# b& ?
0 p w2 r, G4 b$ ^/ `7 ]
// LDAC* p% L4 h5 R( j" K' B f
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK
* P% v: S3 S6 P GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN( Q T: Y% R" ^0 \$ {" m
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
# d3 r! x N( }% b2 j8 x% W GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3- M" r+ i. |" d8 R8 D
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY( C+ z7 z2 P4 p) C( ?0 x% I
}$ R6 I* e! v( `: d
9 Z, \: y2 V5 e! lint main(void)9 T& Q# [; S# x4 c% D% Z4 h
{6 c A* Y9 F7 o* U9 z
// 外设使能7 v4 i* b) m0 \
PSCInit();
* U) z0 O" g% U7 L4 h* S' U
$ C( c1 p# l# U, S# A8 W% T: x
: H8 {: o: L6 [ z // 管脚复用配置
) i8 x4 R' W9 h+ k GPIOBankPinMuxSet();
' o: k1 w. b; v9 t8 T for(;;)
0 i) m# y0 L- v7 Z" c! j9 i {
" G- y$ n) N, A9 l+ X SET_SCLK();//时钟正常输出
/ ^! d2 b) u1 R) r2 | GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2
! s; _; F0 E& R+ L GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3) Z. g/ Y! _/ @. J- ~' J
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN
6 L9 c. ?7 o4 G0 ]5 z2 l2 N! X( B9 G5 k5 G9 s u
delay(20);
* U4 b( @( X. \, g1 w CLR_SCLK(); V Y/ |# B/ C3 d
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3) }7 `2 X2 G6 y2 ?/ u/ i' w2 w5 T
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS35 j: F) C# J7 Y D
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
2 G/ C) Z% L. f6 \: z$ Q- l ]1 l" m delay(20);5 |" c+ k2 L0 d: R
}" ^# t) O* ]) l$ `+ j
}
) \4 [, m' f0 f+ L |
|