|
|
使用下面的例子代码,不能使SIMO和CS为低电平:
) c) V& l# b' O T2 |8 [9 k7 ] Kvoid PSCInit(void)/ d3 E" a1 p# y
{& Y( ?2 F5 S( E, \6 Z
PSCModuleControl(SOC_PSC_1_REGS, HW_PSC_GPIO, PSC_POWERDOMAIN_ALWAYS_ON, PSC_MDCTL_NEXT_ENABLE);
; L6 A4 j; p. N% Y, a Y}
) V3 p* H( M. S; P* `
* x- _3 C6 h/ o1 L0 P3 W, ~! O, R. {void GPIOBankPinMuxSet(void)
0 ~3 G; c( _: J{+ k) `, K; E6 n* a. N
// DRDY ------------ GPIO6[14] -- 111
* U. g; L, P c0 _- f0 b1 e // SPI1_CLK ------------ GPIO2[13] -- 463 Y9 h/ B6 ?3 ]- v* }: r1 {/ B
// SPI1_SOMI------------ GPIO2[11] -- 44
2 w# d$ B! W$ A/ e& _/ U // SPI1_SIMO------------ GPIO2[10] -- 43
2 E" }/ u- _/ W! x& K# J8 l m // SPI1_CS2 ------------ GPIO1[0] -- 17
; T! t+ h' L8 |0 M' K0 |/ A. T // SPI1_CS3 ------------ GPIO1[1] -- 188 Z* R0 G$ L2 L
" P, h _4 _9 h( c HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(4)) = (0x88000000);8 s4 t* O4 b: h6 K/ h
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(5)) = (0x00880800);* Z- u* J9 k9 w7 x- ]0 A
HWREG(SOC_SYSCFG_0_REGS + SYSCFG0_PINMUX(13)) = (0x00000080);
4 Y9 \. o# x& e! h! g& w: l
# h! r X h& K$ _$ |" y //DRDY
+ _1 T/ E+ O- e; s4 I7 c& w& _ GPIODirModeSet(SOC_GPIO_0_REGS, 111, GPIO_DIR_INPUT); // GPIO6[7] DRDY
J! n5 u. T9 T7 z, K8 @! Y9 j: t, G // CS2,CS3% ]( K$ y$ W0 z- k8 q; f
GPIODirModeSet(SOC_GPIO_0_REGS, 17, GPIO_DIR_OUTPUT); // GPIO1[0] CS2
3 {+ L7 c* D- a$ ~8 B; A GPIODirModeSet(SOC_GPIO_0_REGS, 18, GPIO_DIR_OUTPUT); // GPIO1[1] CS3' |$ Q( R% }2 l$ p( X% i) u* B
//SIMO
6 I2 O8 S3 W/ E1 V! |. H4 \ GPIODirModeSet(SOC_GPIO_0_REGS, 43, GPIO_DIR_OUTPUT); // GPIO2[10] SIMO
! l" N4 m' X- `! f //SOMI, S5 U% S5 H9 e
GPIODirModeSet(SOC_GPIO_0_REGS, 44, GPIO_DIR_INPUT); // GPIO2[11] DOMI
3 D& d' n0 t* q/ X //CLK
1 ?1 `6 S) d4 v H7 J2 g; V GPIODirModeSet(SOC_GPIO_0_REGS, 46, GPIO_DIR_OUTPUT); // GPIO2[13] CLK% D% B6 Q6 q2 ?* [
4 i& C9 R/ x( g0 b# K6 b& R // LDAC
( T/ P7 c/ K1 j! \: J# i GPIOPinWrite(SOC_GPIO_0_REGS, 46, GPIO_PIN_LOW); // CLK* ]' x" J7 ^3 _3 I3 ]" s; F# s# C
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN0 l; {( b& T& ^. ^- [
GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2* R, D( F9 l; Q
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); //CS3" Y4 [/ r; @* a9 q8 k& P: n& U1 L
GPIOPinWrite(SOC_GPIO_0_REGS, 111, GPIO_PIN_LOW); //DRDY( O8 z$ m+ o4 c! x, w
}
* y: @7 X9 `9 {1 a+ p7 |! l; n
1 u" y9 f. E6 G& @int main(void)
) ~) k; O! b0 p2 T4 Y; f{
% A$ N7 {& s* s, L! K/ k8 c // 外设使能
2 x) T& I# F. s PSCInit();; l7 E3 n* |3 F. Q9 J
7 o: \3 j1 n3 F ; O7 V" w% u0 h" S M# _7 W
// 管脚复用配置$ ]$ O$ C: ?5 u% [
GPIOBankPinMuxSet();
. k4 P @" ?* N5 P1 b for(;;)
/ J# p7 ?" R# I J; `: p, } {' _, A/ F3 ]$ b% ~8 L
SET_SCLK();//时钟正常输出
9 m% k) D5 @( b: N* J. Z! R GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS2% b! M# f( D/ V, x$ [/ }
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_HIGH); // CS3, g+ @6 ]5 H9 `: |% A
GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_HIGH); // SDIN$ Z$ t' T( j0 c% \
' a# s3 {/ Y/ c2 z delay(20);
- x- h L- {* y! v6 L" c CLR_SCLK();
: _$ n* H* r8 E0 z GPIOPinWrite(SOC_GPIO_0_REGS, 17, GPIO_PIN_HIGH); // CS3$ b) V8 X2 J0 Q. x( B) N
GPIOPinWrite(SOC_GPIO_0_REGS, 18, GPIO_PIN_LOW); // CS3
, e# P1 q5 t \ GPIOPinWrite(SOC_GPIO_0_REGS, 43, GPIO_PIN_LOW); // SDIN# B+ t2 |) b$ Y9 j+ s. U
delay(20);
. e6 B! l( p" y }
2 G7 p5 R7 r& P# m+ }. k O}
% X6 ]0 |6 a' S9 m2 g; C |
|