|
|
使用下面的例子代码,不能使SIMO和CS为低电平:: {; r: i5 I: @ q) y: N2 b
void PSCInit(void)
* T; Z+ j+ p: t+ M7 o{' J# Q w0 ~" M2 q+ M9 o+ z
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
U. i* r& l% r: r! |* p}& r7 t" Q8 K \2 b0 s2 T/ Z8 Z# b
# V, k0 H! z& t. svoid GPIOBankPinMuxSet(void)
1 G, j- w5 Y' {9 F4 a{/ ?* P1 v5 G- f6 h/ y- L" {' m0 p. l
// DRDY ------------ GPIO6[14] -- 111
. Q# r, b+ W* @1 c4 ] // SPI1_CLK ------------ GPIO2[13] -- 46: ^8 \; ~1 E q
// SPI1_SOMI------------ GPIO2[11] -- 44
8 ]1 }0 M* L: x- s" }$ u p // SPI1_SIMO------------ GPIO2[10] -- 43* N- ]. J8 [5 S. E! E
// SPI1_CS2 ------------ GPIO1[0] -- 17* t1 L$ k$ C3 K3 s1 N
// SPI1_CS3 ------------ GPIO1[1] -- 18/ N6 x6 o! O9 }4 q
2 C N% T7 \- y; Q- Y! f HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);' s, C: K5 l! ?
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);
$ U) i8 B2 H( {( f; [+ z HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
+ ^3 I& e( j4 V; B% T+ z1 _- b2 L
//DRDY
5 @, c" N. d5 [! B" ^ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY# m; F) [0 c6 K5 ]4 D4 j5 U( G- a
// CS2,CS3
p: n) h# N7 @2 G% @ GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
% ~3 n5 w: D+ F GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3
# w# N. {' o9 w2 n O, s //SIMO! q3 o3 @7 A+ E5 p' L
GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO; W& _) E9 k" W9 f
//SOMI6 A1 H' q0 A$ A9 D' R
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI3 `* v3 y3 a4 w# X+ Y# b+ k; F
//CLK
7 ?' o: g( ~6 n! q* z GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK, `3 J6 U5 [, e# ], J5 l$ U2 u
* J5 G" g8 k5 w( S& ~ // LDAC `0 _' V3 _# s$ U! L9 ^
GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK+ y8 `8 z$ B5 @5 F! t
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 ~2 _: b7 Y: p
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2- l5 }9 i# ?9 ~; X( @
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3
2 ]9 K4 c- g: L: B GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY6 d) o: g2 @/ b7 D6 G0 k
}2 m" Y4 i6 Z! N; E! ~( _9 V
) d2 \) h' s h C( @int main(void)
1 |0 k8 w6 h m! _+ ~: e{
; a' z5 `1 i# |1 Q2 w, J // 外设使能# l/ ~# p h3 A n4 s8 r+ _3 V+ O: z
PSCInit();7 E# |, g' V" G/ |/ z3 V
I6 }+ I% s) J: r" y* d7 b 6 \% c" W& i0 f
// 管脚复用配置
6 H Q) E4 c" Q$ n: } GPIOBankPinMuxSet();+ a4 B. B! E; \6 l
for(;;)
3 v& m" E. Y" k) j3 M' a H8 m {
% T/ t/ r2 W5 }* z SET_SCLK();//时钟正常输出7 d9 D$ O9 O# L; L( q
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2! ` x* a( ?1 G- }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS37 w3 B8 ]) G5 c, Z
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN: x, @* Y8 P; l! e+ D& i
% L/ X" ^& K. K8 I
delay(20);! ^- {) P3 @' p& C- U8 `, N; k
CLR_SCLK();
2 U9 I. N3 G# k0 ^; p! D GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS32 }) b! l+ W" _9 r
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3; n& y* Z# G3 t
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN
/ @0 G) P6 |5 G! P& ?; R2 H7 \ delay(20);9 s' Q0 r ~4 j0 G2 z
}
4 k* r) C. _1 f}
0 z0 Y% A$ N& |/ l- y% E3 p |
|